org.jscience.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 org.jscience.swing.JMainFrame
                          extended by org.jscience.net.JMessenger
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants, ConnectionDispatcher, NetConnectionHandler

public class JMessenger
extends JMainFrame
implements NetConnectionHandler, ConnectionDispatcher, java.awt.event.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 org.jscience.net.chat.port property from Settings

See Also:
Settings, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class org.jscience.swing.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 org.jscience.net.chat.port
JMessenger(int port)
           
JMessenger(int port, Logger logger)
           
JMessenger(Logger logger)
           
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent e)
           
 void connectionLost(NetConnection connection)
          called internally to handle lost connections
 java.lang.Thread createHandlerThread(NetConnection connection)
          called internally to establish a connection
 void dispose()
          overwritten to shut down the server
 java.lang.Object getConnectionSignature()
          returns a signature object used to identify the desired connection type handled by this ConnectionDispatcher object
 Logger getLogger()
           
 void handleMessage(java.lang.Object message, NetConnection con)
          called internally to handle messages
static void main(java.lang.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(java.awt.Font font)
           
 
Methods inherited from class org.jscience.swing.JMainFrame
complain, getStatusText, hasStatusBar, say, 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, 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, paint, 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 java.io.IOException
uses org.jscience.net.chat.port

Throws:
java.io.IOException

JMessenger

public JMessenger(int port)
           throws java.io.IOException
Throws:
java.io.IOException

JMessenger

public JMessenger(Logger logger)
           throws java.io.IOException
Throws:
java.io.IOException

JMessenger

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

setEncryptionKey

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

Throws:
java.lang.IllegalStateException - if the client is connected

setPort

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

Throws:
java.io.IOException

dispose

public void dispose()
overwritten to shut down the server

Overrides:
dispose in class java.awt.Window

actionPerformed

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

setWindowFont

public void setWindowFont(java.awt.Font font)

handleMessage

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

Specified by:
handleMessage in interface NetConnectionHandler
Parameters:
message - DOCUMENT ME!
con - DOCUMENT ME!

createHandlerThread

public java.lang.Thread createHandlerThread(NetConnection connection)
called internally to establish a connection

Specified by:
createHandlerThread in interface ConnectionDispatcher
See Also:
MessageDelegator

getConnectionSignature

public java.lang.Object getConnectionSignature()
Description copied from interface: ConnectionDispatcher
returns a signature object used to identify the desired connection type handled by this ConnectionDispatcher object

Specified by:
getConnectionSignature in interface ConnectionDispatcher
Returns:
DOCUMENT ME!

connectionLost

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

Specified by:
connectionLost in interface NetConnectionHandler
Parameters:
connection - DOCUMENT ME!

getLogger

public Logger getLogger()

main

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

Throws:
java.lang.Exception