All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jgroups.demos.applets.DrawApplet Maven / Gradle / Ivy

Go to download

This artifact provides a single jar that contains all classes required to use remote Jakarta Enterprise Beans and Jakarta Messaging, including all dependencies. It is intended for use by those not using maven, maven users should just import the Jakarta Enterprise Beans and Jakarta Messaging BOM's instead (shaded JAR's cause lots of problems with maven, as it is very easy to inadvertently end up with different versions on classes on the class path).

There is a newer version: 35.0.0.Beta1
Show newest version
package org.jgroups.demos.applets;

import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.io.*;
import java.util.*;
import java.util.List;

import org.jgroups.*;
import org.jgroups.logging.Log;
import org.jgroups.logging.LogFactory;
import org.jgroups.util.Util;


public class DrawApplet extends Applet implements MouseMotionListener, ActionListener {
    private Graphics graphics=null;
    private Panel panel=null, sub_panel=null;
    private final ByteArrayOutputStream out=new ByteArrayOutputStream();
    private DataOutputStream outstream;
    private DataInputStream instream;
    private final Random random=new Random(System.currentTimeMillis());
    private Button clear_button, leave_button;
    private Label mbr_label;
    private final Font default_font=new Font("Helvetica", Font.PLAIN, 12);
    private static final String groupname="DrawGroup";
    private Channel channel=null;
    private int member_size=1;
    private int red=0, green=0, blue=0;
    private Color default_color=null;

    private String props="tunnel.xml";

    private final List
members=new ArrayList<>(); private boolean fl=true; Log log=LogFactory.getLog(getClass()); public void init() { System.out.println("INIT"); setLayout(new BorderLayout()); String tmp_props=getParameter("properties"); if(tmp_props != null) { System.out.println("Setting parameters " + tmp_props); props=tmp_props; } try { channel=new JChannel(props); channel.setReceiver(new ReceiverAdapter() { public void viewAccepted(View v) { List
mbrs=v.getMembers(); System.out.println("View accepted: " + v); member_size=v.size(); if(mbr_label != null) mbr_label.setText(member_size + " mbr(s)"); members.clear(); members.addAll(mbrs); } public void receive(Message msg) { if(msg == null || msg.getLength() == 0) { log.error("DrawApplet.run(): msg or msg.buffer is null !"); return; } instream=new DataInputStream(new ByteArrayInputStream(msg.getRawBuffer(), msg.getOffset(), msg.getLength())); int r=0; try { r=instream.readInt(); if(r == -13) { clearPanel(); return; } int g=instream.readInt(); int b=instream.readInt(); int my_x=instream.readInt(); int my_y=instream.readInt(); if(graphics != null) { graphics.setColor(new Color(r, g, b)); graphics.fillOval(my_x, my_y, 10, 10); graphics.setColor(default_color); } } catch(Exception ex) { ex.printStackTrace(); } } }); showStatus("Connecting to group " + groupname); channel.connect(groupname); } catch(Exception e) { e.printStackTrace(); } go(); } public void start() { System.out.println("------- START"); } public void destroy() { System.out.println("------- DESTROY"); showStatus("Disconnecting from " + groupname); channel.close(); showStatus("Disconnected"); } public void paint(Graphics g) { Rectangle bounds=panel.getBounds(); Color old=graphics.getColor(); if(bounds == null || graphics == null) return; graphics.setColor(Color.black); graphics.drawRect(0, 0, bounds.width - 1, bounds.height - 1); graphics.setColor(old); } private void selectColor() { red=Math.abs(random.nextInt()) % 255; green=Math.abs(random.nextInt()) % 255; blue=Math.abs(random.nextInt()) % 255; default_color=new Color(red, green, blue); } public void go() { try { panel=new Panel(); sub_panel=new Panel(); resize(200, 200); add("Center", panel); clear_button=new Button("Clear"); clear_button.setFont(default_font); clear_button.addActionListener(this); leave_button=new Button("Exit"); leave_button.setFont(default_font); leave_button.addActionListener(this); mbr_label=new Label("0 mbr(s)"); mbr_label.setFont(default_font); sub_panel.add("South", clear_button); sub_panel.add("South", leave_button); sub_panel.add("South", mbr_label); add("South", sub_panel); panel.addMouseMotionListener(this); setVisible(true); mbr_label.setText(member_size + " mbrs"); graphics=panel.getGraphics(); selectColor(); graphics.setColor(default_color); panel.setBackground(Color.white); clear_button.setForeground(Color.blue); leave_button.setForeground(Color.blue); } catch(Exception e) { log.error(e.toString()); } } /* --------------- Callbacks --------------- */ public void mouseMoved(MouseEvent e) { } public void mouseDragged(MouseEvent e) { int tmp[]=new int[1], x, y; tmp[0]=0; x=e.getX(); y=e.getY(); graphics.fillOval(x, y, 10, 10); try { out.reset(); outstream=new DataOutputStream(out); outstream.writeInt(red); outstream.writeInt(green); outstream.writeInt(blue); outstream.writeInt(x); outstream.writeInt(y); channel.send(new Message(null, null, out.toByteArray())); out.reset(); } catch(Exception ex) { log.error(ex.toString()); } } public void clearPanel() { Rectangle bounds=null; if(panel == null || graphics == null) return; bounds=panel.getBounds(); graphics.clearRect(1, 1, bounds.width - 2, bounds.height - 2); } public void sendClearPanelMsg() { int tmp[]=new int[1]; tmp[0]=0; clearPanel(); try { out.reset(); outstream=new DataOutputStream(out); outstream.writeInt(-13); channel.send(new Message(null, null, out.toByteArray())); outstream.flush(); } catch(Exception ex) { log.error(ex.toString()); } } public void actionPerformed(ActionEvent e) { String command=e.getActionCommand(); if(command == "Clear") { System.out.println("Members are " + members); sendClearPanelMsg(); } else if(command == "Exit") { try { destroy(); setVisible(false); } catch(Exception ex) { log.error(ex.toString()); } } else System.out.println("Unknown action"); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy