Class Draw

  • All Implemented Interfaces:
    java.awt.event.ActionListener, java.util.EventListener, ChannelListener, Receiver

    public class Draw
    extends java.lang.Object
    implements Receiver, java.awt.event.ActionListener, ChannelListener
    Shared whiteboard, each new instance joins the same group. Each instance chooses a random color, mouse moves are broadcast to all group members, which then apply them to their canvas

    Author:
    Bela Ban, Oct 17 2001
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected class  Draw.DrawPanel  
    • Constructor Summary

      Constructors 
      Constructor Description
      Draw​(java.lang.String props, boolean no_channel, boolean jmx, boolean use_state, long state_timeout, boolean use_unicasts, java.lang.String name, boolean send_own_state_on_merge, AddressGenerator gen)  
      Draw​(JChannel channel)  
      Draw​(JChannel channel, boolean use_state, long state_timeout)  
    • Field Detail

      • cluster_name

        protected java.lang.String cluster_name
      • send_own_state_on_merge

        protected boolean send_own_state_on_merge
    • Constructor Detail

      • Draw

        public Draw​(java.lang.String props,
                    boolean no_channel,
                    boolean jmx,
                    boolean use_state,
                    long state_timeout,
                    boolean use_unicasts,
                    java.lang.String name,
                    boolean send_own_state_on_merge,
                    AddressGenerator gen)
             throws java.lang.Exception
        Throws:
        java.lang.Exception
      • Draw

        public Draw​(JChannel channel)
             throws java.lang.Exception
        Throws:
        java.lang.Exception
      • Draw

        public Draw​(JChannel channel,
                    boolean use_state,
                    long state_timeout)
             throws java.lang.Exception
        Throws:
        java.lang.Exception
    • Method Detail

      • getClusterName

        public java.lang.String getClusterName()
      • setClusterName

        public void setClusterName​(java.lang.String clustername)
      • main

        public static void main​(java.lang.String[] args)
      • go

        public void go()
                throws java.lang.Exception
        Throws:
        java.lang.Exception
      • receive

        public void receive​(Message msg)
        Description copied from interface: Receiver
        Called when a message is received.
        Specified by:
        receive in interface Receiver
        Parameters:
        msg - The message
      • viewAccepted

        public void viewAccepted​(View v)
        Description copied from interface: Receiver
        Called when a change in membership has occurred. No long running actions, sending of messages or anything that could block should be done in this callback. If some long running action needs to be performed, it should be done in a separate thread.
        Note that on reception of the first view (a new member just joined), the channel will not yet be in the connected state. This only happens when JChannel.connect(String) returns.
        Specified by:
        viewAccepted in interface Receiver
      • getState

        public void getState​(java.io.OutputStream ostream)
                      throws java.lang.Exception
        Description copied from interface: Receiver
        Allows an application to write the state to an OutputStream. After the state has been written, the OutputStream doesn't need to be closed as stream closing is automatically done when a calling thread returns from this callback.
        Specified by:
        getState in interface Receiver
        Parameters:
        ostream - The OutputStream
        Throws:
        java.lang.Exception - If the streaming fails, any exceptions should be thrown so that the state requester can re-throw them and let the caller know what happened
      • setState

        public void setState​(java.io.InputStream istream)
                      throws java.lang.Exception
        Description copied from interface: Receiver
        Allows an application to read the state from an InputStream. After the state has been read, the InputStream doesn't need to be closed as stream closing is automatically done when a calling thread returns from this callback.
        Specified by:
        setState in interface Receiver
        Parameters:
        istream - The InputStream
        Throws:
        java.lang.Exception - If the streaming fails, any exceptions should be thrown so that the state requester can catch them and thus know what happened
      • clearPanel

        public void clearPanel()
      • sendClearPanelMsg

        public void sendClearPanelMsg()
      • actionPerformed

        public void actionPerformed​(java.awt.event.ActionEvent e)
        Specified by:
        actionPerformed in interface java.awt.event.ActionListener
      • stop

        public void stop()
      • sendOwnState

        protected void sendOwnState​(java.util.Map<java.awt.Point,​java.awt.Color> copy)
      • channelConnected

        public void channelConnected​(JChannel channel)
        Description copied from interface: ChannelListener
        Channel has been connected notification callback
        Specified by:
        channelConnected in interface ChannelListener
        Parameters:
        channel - the channel that has been connected
      • channelDisconnected

        public void channelDisconnected​(JChannel channel)
        Description copied from interface: ChannelListener
        Channel has been disconnected notification callback
        Specified by:
        channelDisconnected in interface ChannelListener
        Parameters:
        channel - the disconnected channel