org.jivesoftware.spark.ui
Class ChatArea

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.text.JTextComponent
                  extended by javax.swing.JEditorPane
                      extended by javax.swing.JTextPane
                          extended by org.jivesoftware.spark.ui.ChatArea
All Implemented Interfaces:
java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.Scrollable
Direct Known Subclasses:
ChatInputEditor, TranscriptWindow

public class ChatArea
extends javax.swing.JTextPane
implements java.awt.event.MouseListener, java.awt.event.MouseMotionListener

The ChatArea class handles proper chat text formatting such as url handling. Use ChatArea for proper formatting of bold, italics, underlined and urls.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JEditorPane
javax.swing.JEditorPane.AccessibleJEditorPane, javax.swing.JEditorPane.AccessibleJEditorPaneHTML, javax.swing.JEditorPane.JEditorPaneAccessibleHypertextSupport
 
Nested classes/interfaces inherited from class javax.swing.text.JTextComponent
javax.swing.text.JTextComponent.AccessibleJTextComponent, javax.swing.text.JTextComponent.KeyBinding
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
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.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
static java.awt.Cursor DEFAULT_CURSOR
          The default Text Cursor.
static java.awt.Cursor HAND_CURSOR
          The default Hand cursor.
 javax.swing.text.SimpleAttributeSet styles
          The SimpleAttributeSet used within this instance of JTextPane.
 
Fields inherited from class javax.swing.JEditorPane
HONOR_DISPLAY_PROPERTIES, W3C_LENGTH_UNITS
 
Fields inherited from class javax.swing.text.JTextComponent
DEFAULT_KEYMAP, FOCUS_ACCELERATOR_KEY
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
ChatArea()
          ChatArea Constructor.
 
Method Summary
 void addContextMenuListener(ContextMenuListener listener)
          Adds a ContextMenuListener to ChatArea.
 void addLinkInterceptor(LinkInterceptor interceptor)
           
 void clear()
          Clear the current document.
 boolean fireLinkInterceptors(java.awt.event.MouseEvent event, java.lang.String link)
           
 java.lang.String getMarkup()
          Examines the chatInput text pane, and returns a string containing the text with any markup (jive markup in our case).
 void insert(java.lang.String text)
          Does the actual insertion of text, adhering to the styles specified during message creation in either the thin or thick client.
 boolean insertImage(java.lang.String image)
          Inserts an emotion icon into the current document.
 void insertLink(java.lang.String link)
          Inserts a link into the current document.
 void insertText(java.lang.String text)
          Inserts text into the current document.
 void insertText(java.lang.String text, java.awt.Color color)
          Inserts text into the current document.
 void mouseClicked(java.awt.event.MouseEvent e)
           
 void mouseDragged(java.awt.event.MouseEvent e)
           
 void mouseEntered(java.awt.event.MouseEvent e)
           
 void mouseExited(java.awt.event.MouseEvent e)
           
 void mouseMoved(java.awt.event.MouseEvent e)
          Checks to see if the mouse is located over a browseable link.
 void mousePressed(java.awt.event.MouseEvent e)
           
 void mouseReleased(java.awt.event.MouseEvent e)
          This launches the BrowserLauncher with the URL located in ChatArea.
 void removeContextMenuListener(ContextMenuListener listener)
          Remove a ContextMenuListener to ChatArea.
 void removeLinkInterceptor(LinkInterceptor interceptor)
           
 void setBold()
          Sets the current element to be either bold or not depending on the current state.
 void setFont(java.lang.String font)
          Set the font on the current element.
 void setFontSize(int size)
          Set the current font size.
 void setItalics()
          Sets the current element to be either italicized or not depending on the current state.
 void setText(java.lang.String message)
          Set the current text of the ChatArea.
 void setUnderlined()
          Sets the current document to be either underlined or not depending on the current state.
 
Methods inherited from class javax.swing.JTextPane
addStyle, createDefaultEditorKit, getCharacterAttributes, getInputAttributes, getLogicalStyle, getParagraphAttributes, getStyle, getStyledDocument, getStyledEditorKit, getUIClassID, insertComponent, insertIcon, paramString, removeStyle, replaceSelection, setCharacterAttributes, setDocument, setEditorKit, setLogicalStyle, setParagraphAttributes, setStyledDocument
 
Methods inherited from class javax.swing.JEditorPane
addHyperlinkListener, createEditorKitForContentType, fireHyperlinkUpdate, getAccessibleContext, getContentType, getEditorKit, getEditorKitClassNameForContentType, getEditorKitForContentType, getHyperlinkListeners, getPage, getPreferredSize, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getStream, getText, read, registerEditorKitForContentType, registerEditorKitForContentType, removeHyperlinkListener, scrollToReference, setContentType, setEditorKitForContentType, setPage, setPage
 
Methods inherited from class javax.swing.text.JTextComponent
addCaretListener, addInputMethodListener, addKeymap, copy, cut, fireCaretUpdate, getActions, getCaret, getCaretColor, getCaretListeners, getCaretPosition, getDisabledTextColor, getDocument, getDragEnabled, getFocusAccelerator, getHighlighter, getInputMethodRequests, getKeymap, getKeymap, getMargin, getNavigationFilter, getPreferredScrollableViewportSize, getScrollableBlockIncrement, getScrollableUnitIncrement, getSelectedText, getSelectedTextColor, getSelectionColor, getSelectionEnd, getSelectionStart, getText, getToolTipText, getUI, isEditable, loadKeymap, modelToView, moveCaretPosition, paste, processInputMethodEvent, read, removeCaretListener, removeKeymap, removeNotify, select, selectAll, setCaret, setCaretColor, setCaretPosition, setComponentOrientation, setDisabledTextColor, setDragEnabled, setEditable, setFocusAccelerator, setHighlighter, setKeymap, setMargin, setNavigationFilter, setSelectedTextColor, setSelectionColor, setSelectionEnd, setSelectionStart, setUI, updateUI, viewToModel, write
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

styles

public final javax.swing.text.SimpleAttributeSet styles
The SimpleAttributeSet used within this instance of JTextPane.


HAND_CURSOR

public static final java.awt.Cursor HAND_CURSOR
The default Hand cursor.


DEFAULT_CURSOR

public static final java.awt.Cursor DEFAULT_CURSOR
The default Text Cursor.

Constructor Detail

ChatArea

public ChatArea()
ChatArea Constructor.

Method Detail

setText

public void setText(java.lang.String message)
Set the current text of the ChatArea.

Overrides:
setText in class javax.swing.JEditorPane
Parameters:
message - inserts the text directly into the ChatArea

clear

public void clear()
Clear the current document. This will remove all text and element attributes such as bold, italics, and underlining. Note that the font family and font size will be persisted.


insert

public void insert(java.lang.String text)
            throws javax.swing.text.BadLocationException
Does the actual insertion of text, adhering to the styles specified during message creation in either the thin or thick client.

Parameters:
text - - the text to insert.
Throws:
javax.swing.text.BadLocationException

insertText

public void insertText(java.lang.String text)
                throws javax.swing.text.BadLocationException
Inserts text into the current document.

Parameters:
text - the text to insert
Throws:
javax.swing.text.BadLocationException

insertText

public void insertText(java.lang.String text,
                       java.awt.Color color)
                throws javax.swing.text.BadLocationException
Inserts text into the current document.

Parameters:
text - the text to insert
color - the color of the text
Throws:
javax.swing.text.BadLocationException

insertLink

public void insertLink(java.lang.String link)
                throws javax.swing.text.BadLocationException
Inserts a link into the current document.

Parameters:
link - - the link to insert( ex. http://www.javasoft.com )
Throws:
javax.swing.text.BadLocationException

insertImage

public boolean insertImage(java.lang.String image)
Inserts an emotion icon into the current document.

Parameters:
image - - the smiley representation of the image.( ex. :) )
Returns:
true if the image was found, otherwise false.

setBold

public void setBold()
Sets the current element to be either bold or not depending on the current state. If the element is currently set as bold, it will be set to false, and vice-versa.


setItalics

public void setItalics()
Sets the current element to be either italicized or not depending on the current state. If the element is currently set as italic, it will be set to false, and vice-versa.


setUnderlined

public void setUnderlined()
Sets the current document to be either underlined or not depending on the current state. If the element is currently set as underlined, it will be set to false, and vice-versa.


setFont

public void setFont(java.lang.String font)
Set the font on the current element.

Parameters:
font - the font to use with the current element

setFontSize

public void setFontSize(int size)
Set the current font size.

Parameters:
size - the current font size.

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Specified by:
mouseClicked in interface java.awt.event.MouseListener

mousePressed

public void mousePressed(java.awt.event.MouseEvent e)
Specified by:
mousePressed in interface java.awt.event.MouseListener

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)
This launches the BrowserLauncher with the URL located in ChatArea. Note that the url will automatically be clickable when added to ChatArea

Specified by:
mouseReleased in interface java.awt.event.MouseListener
Parameters:
e - - the MouseReleased event

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent e)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent e)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent e)
Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent e)
Checks to see if the mouse is located over a browseable link.

Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener
Parameters:
e - - the current MouseEvent.

getMarkup

public java.lang.String getMarkup()
Examines the chatInput text pane, and returns a string containing the text with any markup (jive markup in our case). This will strip any terminating new line from the input.

Returns:
a string of marked up text.

addContextMenuListener

public void addContextMenuListener(ContextMenuListener listener)
Adds a ContextMenuListener to ChatArea.

Parameters:
listener - the ContextMenuListener.

removeContextMenuListener

public void removeContextMenuListener(ContextMenuListener listener)
Remove a ContextMenuListener to ChatArea.

Parameters:
listener - the ContextMenuListener.

addLinkInterceptor

public void addLinkInterceptor(LinkInterceptor interceptor)

removeLinkInterceptor

public void removeLinkInterceptor(LinkInterceptor interceptor)

fireLinkInterceptors

public boolean fireLinkInterceptors(java.awt.event.MouseEvent event,
                                    java.lang.String link)