Holger's Java API

## com.antelmann.net
Class JMessenger

    java.lang.Object
      java.awt.Component
          java.awt.Container
              java.awt.Window
                  java.awt.Frame
                      javax.swing.JFrame
                          com.antelmann.util.gui.JMainFrame
                              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