diff options
Diffstat (limited to 'src/TestIvy.java')
-rwxr-xr-x | src/TestIvy.java | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/TestIvy.java b/src/TestIvy.java new file mode 100755 index 0000000..46f484d --- /dev/null +++ b/src/TestIvy.java @@ -0,0 +1,115 @@ +package fr.dgac.ivy ; + +import java.awt.* ; +import java.awt.event.* ; + +class TestIvy extends Panel implements IvyApplicationListener{ + + Ivy bus ; + String regexp ; + TextField tfRegex, tfSend ; + TextArea ta ; + Button buApply, buSend, buClear ; + int regexp_id; + public TestIvy() throws IvyException { + super(new BorderLayout()); + regexp = ""; + // un textarea au centre + ta = new TextArea(); + ta.setEditable(false); + add(ta,BorderLayout.CENTER); + // une zone regex au nord + Panel p = new Panel(new BorderLayout()); + p.add(new Label("Regex:"),BorderLayout.WEST); + tfRegex = new TextField(regexp); + tfRegex.addActionListener(new REGCB()); + p.add(tfRegex,BorderLayout.CENTER); + add(p,BorderLayout.NORTH); + // une zone messages au sud + p = new Panel(new BorderLayout()); + p.add(new Label("Msg:"),BorderLayout.WEST); + tfSend = new TextField(""); + tfSend.addActionListener(new SENDCB()); + p.add(tfSend,BorderLayout.CENTER); + add(p,BorderLayout.SOUTH); + bus = new Ivy("JAVA TESTBUS","Testbus ridi",this); + bus.start(null); + append( "Ivy Domain: "+ bus.getDomain(null) ); + } + + public void stop() { + bus.stop(); + } + public void connect(IvyClient client) { + append(client.getApplicationName() + " connected " ); + } + public void disconnect(IvyClient client) { + append(client.getApplicationName() + " disconnected " ); + } + public void die(IvyClient client, int id) { + append(client.getApplicationName() + " die "+ id ); + } + public void directMessage(IvyClient client, int id, String arg) { + append(client.getApplicationName() + " direct Message "+ id + arg ); + } + /* inner */ class REGCB implements ActionListener, IvyMessageListener { + public void actionPerformed(ActionEvent e) { + // enlever l'ancienne regex + bus.unBindMsg(regexp_id); + // ajoute la nouvelle regex + regexp=tfRegex.getText(); + regexp.trim(); + regexp_id = bus.bindMsg(regexp,this); + tfRegex.setText(""); + } + public void receive(IvyClient client, String[] args) { + String out="client " + client.getApplicationName() + " envoie: [ "; + for (int i=0;i<args.length;i++) + out=out+args[i]+ ((i<args.length-1)?" , ":""); + out = out + " ]"; + append(out); + } + } + + /* inner */ class SENDCB implements ActionListener { + public void actionPerformed(ActionEvent e) { + int count; + String tosend = tfSend.getText(); + tfSend.setText(""); + count = bus.sendMsg(tosend); + append("Sending '" + tosend + "' count " + count ); + + } + } + + private void append(String s) { + // je mettrais bien la date, aussi. + ta.append(s + "\n"); + } + + public static void main(String[] args) throws IvyException { + TestIvy tb = new TestIvy(); + Frame f = new Frame("TestIvy"); + f.addWindowListener( tb.new WCCB(f,tb)) ; + f.add(tb, BorderLayout.CENTER); + f.pack(); + f.setVisible(true); + } + + /* inner */ class WCCB extends WindowAdapter { + private Frame f; + public WCCB(Frame f, TestIvy b) { + this.f=f; + } + public void windowClosing(WindowEvent e) { + f.setVisible(false); + bus.stop(); + bus = null; + f.dispose(); + System.exit(0); + } + } + +} + +// EOF |