Holger's
Java API

com.antelmann.net
Class JMessenger

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by com.antelmann.util.gui.JMainFrame
                          extended by com.antelmann.net.JMessenger
All Implemented Interfaces:
ConnectionDispatcher, NetConnectionHandler, ActionListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible, RootPaneContainer, WindowConstants

public class JMessenger
extends JMainFrame
implements NetConnectionHandler, ConnectionDispatcher, ActionListener

JMessenger provides a simple GUI messenger for a direct peer-to-peer connection that uses one side as the server. It also supports direct file transfer as a feature; note, that even if the encryption is enabled, the file transfer is not (as it is easy enough to encrypt the file beforehand, while it is not so trivial to encrypt the file in memory if the file is larger than the VM).

JMessenger uses the com.antelmann.net.chat.port property from Settings

Author:
Holger Antelmann
See Also:
Settings, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JFrame
JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class com.antelmann.util.gui.JMainFrame
hasStatusBar, statusBar, statusLabel, verbose
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JMessenger()
          uses com.antelmann.net.chat.port
JMessenger(int port)
           
JMessenger(int port, Logger logger)
           
JMessenger(Logger logger)
           
 
Method Summary
 void actionPerformed(ActionEvent e)
           
 void connectionLost(NetConnection connection)
          called internally to handle lost connections
 NetConnection createConnection(Socket socket)
          called internally to establish a connection
 MessageDelegator createDispatcher(NetConnection con, NetConnectionHandler handler)
          responsible for creating the delegator based on the created connection and the associated handler
 NetConnectionHandler createHandler(NetConnection con)
          produces a NetConnectionHandler which will be started in a new Thread (created by the NetConnectionServer's ThreadFactory) to handle the given NetConnection and listens to messages.
 void dispose()
          overwritten to shut down the server
 Handshake getHandshake()
          returns a signature object used to identify the desired connection type handled by this ConnectionDispatcher object
 Logger getLogger()
           
 void handleMessage(Object message, NetConnection con)
          called internally to handle messages
static void main(String[] args)
          starts a JMessenger instance and makes it visible
 void setEncryptionKey(SynchronousKey key)
          sets the encryption key to be used if encryption is enabled
 void setPort(int port)
          sets the port to listen for incoming connections (if other than default)
 void setWindowFont(Font font)
           
 
Methods inherited from class com.antelmann.util.gui.JMainFrame
complain, getStatusText, hasStatusBar, initStatusBar, say, setCentralContent, setStatusText, updateStatusText
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Frame
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setVisible, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Constructor Detail

JMessenger

public JMessenger()
           throws IOException
uses com.antelmann.net.chat.port

Throws:
IOException

JMessenger

public JMessenger(int port)
           throws IOException
Throws:
IOException

JMessenger

public JMessenger(Logger logger)
           throws IOException
Throws:
IOException

JMessenger

public JMessenger(int port,
                  Logger logger)
           throws IOException
Parameters:
port - if 0, com.antelmann.net.chat.port property is used
logger - must not be null; use another constructor if you don't need a logger
Throws:
IOException
Method Detail

setEncryptionKey

public void setEncryptionKey(SynchronousKey key)
                      throws IllegalStateException
sets the encryption key to be used if encryption is enabled

Throws:
IllegalStateException - if the client is connected

setPort

public void setPort(int port)
             throws IOException
sets the port to listen for incoming connections (if other than default)

Throws:
IOException

dispose

public void dispose()
overwritten to shut down the server

Overrides:
dispose in class JMainFrame

actionPerformed

public void actionPerformed(ActionEvent e)
Specified by:
actionPerformed in interface ActionListener

setWindowFont

public void setWindowFont(Font font)

handleMessage

public void handleMessage(Object message,
                          NetConnection con)
called internally to handle messages

Specified by:
handleMessage in interface NetConnectionHandler

createConnection

public NetConnection createConnection(Socket socket)
                               throws IOException
called internally to establish a connection

Specified by:
createConnection in interface ConnectionDispatcher
Throws:
IOException
See Also:
SocketConnection.createServerConnection(Socket, Handshake)

createHandler

public NetConnectionHandler createHandler(NetConnection con)
Description copied from interface: ConnectionDispatcher
produces a NetConnectionHandler which will be started in a new Thread (created by the NetConnectionServer's ThreadFactory) to handle the given NetConnection and listens to messages. Typically, the returned object could be a MessageDelegator.

Specified by:
createHandler in interface ConnectionDispatcher
See Also:
MessageDelegator

createDispatcher

public MessageDelegator createDispatcher(NetConnection con,
                                         NetConnectionHandler handler)
Description copied from interface: ConnectionDispatcher
responsible for creating the delegator based on the created connection and the associated handler

Specified by:
createDispatcher in interface ConnectionDispatcher

getHandshake

public Handshake getHandshake()
Description copied from interface: ConnectionDispatcher
returns a signature object used to identify the desired connection type handled by this ConnectionDispatcher object

Specified by:
getHandshake in interface ConnectionDispatcher

connectionLost

public void connectionLost(NetConnection connection)
called internally to handle lost connections

Specified by:
connectionLost in interface NetConnectionHandler

getLogger

public Logger getLogger()

main

public static void main(String[] args)
                 throws Exception
starts a JMessenger instance and makes it visible

Throws:
Exception


(c) Holger Antelmann since 2001- all rights reserved (contact: info@antelmann.com)
see www.antelmann.com/developer for further details and available downloads