Jitsi: the OpenSource Java VoIP and Instant Messaging client.

net.java.sip.communicator.impl.gui.main.chat
Class ChatWritePanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by net.java.sip.communicator.util.swing.TransparentPanel
                      extended by net.java.sip.communicator.impl.gui.main.chat.ChatWritePanel
All Implemented Interfaces:
ActionListener, KeyListener, MouseListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible, DocumentListener, UndoableEditListener, Skinnable

public class ChatWritePanel
extends TransparentPanel
implements ActionListener, KeyListener, MouseListener, UndoableEditListener, DocumentListener, Skinnable

The ChatWritePanel is the panel, where user writes her messages. It is located at the bottom of the split in the ChatPanel and it contains an editor, where user writes the text.

Author:
Yana Stamcheva, Lubomir Marinov, Adam Netocny
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
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 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
ChatWritePanel(ChatPanel panel)
          Creates an instance of ChatWritePanel.
 
Method Summary
 void actionPerformed(ActionEvent e)
          Performs actions when typing timer has expired.
 void addChatEditorMenuListener(ChatMenuListener l)
          Adds the given ChatMenuListener to this Chat.
 void addChatTransport(ChatTransport chatTransport)
          Adds the given chatTransport to the given send via selector box.
 void appendText(String text)
          Appends the given text to the end of the contained HTML document.
 void changedUpdate(DocumentEvent documentevent)
           
 void changeSendCommand(boolean isEnter)
          Replaces the Ctrl+Enter send command with simple Enter.
 void clearWriteArea()
          Clears write message area.
 void dispose()
          Runs clean-up for associated resources which need explicit disposal (e.g.
 JEditorPane getEditorPane()
          Returns the editor panel, contained in this ChatWritePanel.
 WritePanelRightButtonMenu getRightButtonMenu()
          Returns the WritePanelRightButtonMenu opened in this panel.
 String getText()
          Returns the write area text as a plain text without any formatting.
 String getTextAsHtml()
          Returns the write area text as an html text.
 void insertUpdate(DocumentEvent event)
          Updates write panel size and adjusts sms properties if the sms menu is visible.
 boolean isSmsSelected()
          Returns true if the sms mode is enabled, otherwise returns false.
 void keyPressed(KeyEvent e)
          When CTRL+Z is pressed invokes the ChatWritePanel.undo() method, when CTRL+R is pressed invokes the ChatWritePanel.redo() method.
 void keyReleased(KeyEvent e)
           
 void keyTyped(KeyEvent e)
          Sends typing notifications when user types.
 void loadSkin()
          Reloads menu.
 void mouseClicked(MouseEvent e)
          Opens the WritePanelRightButtonMenu when user clicks with the right mouse button on the editor area.
 void mouseEntered(MouseEvent e)
           
 void mouseExited(MouseEvent e)
           
 void mousePressed(MouseEvent e)
           
 void mouseReleased(MouseEvent e)
           
 void openChatTransportSelectorBox()
          Opens the selector box containing the protocol contact icons.
 void removeChatEditorMenuListener(ChatMenuListener l)
          Removes the given ChatMenuListener to this Chat.
 void removeChatTransport(ChatTransport chatTransport)
          Removes the given chat status state from the send via selector box.
 void removeUpdate(DocumentEvent event)
          Updates write panel size and adjusts sms properties if the sms menu is visible.
 void saveDefaultFontConfiguration(String fontFamily, int fontSize, boolean isBold, boolean isItalic, boolean isUnderline, Color color)
          Saves the given font configuration as default, thus making it the default configuration for all chats.
 void setBoldStyleEnable(boolean b)
          Enables the bold style
 void setFontColor(Color color)
          Sets the font color
 void setFontFamilyAndSize(String family, int size)
          Sets the font family and size
 void setItalicStyleEnable(boolean b)
          Enables the italic style
 void setSelectedChatTransport(ChatTransport chatTransport)
          Selects the given chat transport in the send via box.
 void setSmsLabelVisible(boolean isVisible)
          Show the sms menu.
 void setSmsSelected(boolean selected)
          Enables/disables the sms mode.
 void setTransportSelectorBoxVisible(boolean isVisible)
           
 void setUnderlineStyleEnable(boolean b)
          Enables the underline style
 void stopTypingTimer()
          Stops the timer and sends a notification message.
 void undoableEditHappened(UndoableEditEvent e)
          Handles the UndoableEditEvent, by adding the content edit to the UndoManager.
 void updateChatTransportStatus(ChatTransport chatTransport)
          Updates the status of the given chat transport in the send via selector box and notifies the user for the status change.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
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, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, 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, addInputMethodListener, 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, getInputMethodRequests, 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, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, 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
 

Constructor Detail

ChatWritePanel

public ChatWritePanel(ChatPanel panel)
Creates an instance of ChatWritePanel.

Parameters:
panel - The parent ChatPanel.
Method Detail

dispose

public void dispose()
Runs clean-up for associated resources which need explicit disposal (e.g. listeners keeping this instance alive because they were added to the model which operationally outlives this instance).


getEditorPane

public JEditorPane getEditorPane()
Returns the editor panel, contained in this ChatWritePanel.

Returns:
The editor panel, contained in this ChatWritePanel.

changeSendCommand

public void changeSendCommand(boolean isEnter)
Replaces the Ctrl+Enter send command with simple Enter.

Parameters:
isEnter - indicates if the new send command is enter or cmd-enter

setSmsSelected

public void setSmsSelected(boolean selected)
Enables/disables the sms mode.

Parameters:
selected - true to enable sms mode, false - otherwise

isSmsSelected

public boolean isSmsSelected()
Returns true if the sms mode is enabled, otherwise returns false.

Returns:
true if the sms mode is enabled, otherwise returns false

undoableEditHappened

public void undoableEditHappened(UndoableEditEvent e)
Handles the UndoableEditEvent, by adding the content edit to the UndoManager.

Specified by:
undoableEditHappened in interface UndoableEditListener
Parameters:
e - The UndoableEditEvent.

keyTyped

public void keyTyped(KeyEvent e)
Sends typing notifications when user types.

Specified by:
keyTyped in interface KeyListener
Parameters:
e - the event.

keyPressed

public void keyPressed(KeyEvent e)
When CTRL+Z is pressed invokes the ChatWritePanel.undo() method, when CTRL+R is pressed invokes the ChatWritePanel.redo() method.

Specified by:
keyPressed in interface KeyListener
Parameters:
e - the KeyEvent that notified us

keyReleased

public void keyReleased(KeyEvent e)
Specified by:
keyReleased in interface KeyListener

actionPerformed

public void actionPerformed(ActionEvent e)
Performs actions when typing timer has expired.

Specified by:
actionPerformed in interface ActionListener
Parameters:
e - the ActionEvent that notified us

stopTypingTimer

public void stopTypingTimer()
Stops the timer and sends a notification message.


mouseClicked

public void mouseClicked(MouseEvent e)
Opens the WritePanelRightButtonMenu when user clicks with the right mouse button on the editor area.

Specified by:
mouseClicked in interface MouseListener
Parameters:
e - the MouseEvent that notified us

mousePressed

public void mousePressed(MouseEvent e)
Specified by:
mousePressed in interface MouseListener

mouseReleased

public void mouseReleased(MouseEvent e)
Specified by:
mouseReleased in interface MouseListener

mouseEntered

public void mouseEntered(MouseEvent e)
Specified by:
mouseEntered in interface MouseListener

mouseExited

public void mouseExited(MouseEvent e)
Specified by:
mouseExited in interface MouseListener

getRightButtonMenu

public WritePanelRightButtonMenu getRightButtonMenu()
Returns the WritePanelRightButtonMenu opened in this panel. Used by the ChatWindow, when the ESC button is pressed, to check if there is an open menu, which should be closed.

Returns:
the WritePanelRightButtonMenu opened in this panel

getTextAsHtml

public String getTextAsHtml()
Returns the write area text as an html text.

Returns:
the write area text as an html text.

getText

public String getText()
Returns the write area text as a plain text without any formatting.

Returns:
the write area text as a plain text without any formatting.

clearWriteArea

public void clearWriteArea()
Clears write message area.


appendText

public void appendText(String text)
Appends the given text to the end of the contained HTML document. This method is used to insert smileys when user selects a smiley from the menu.

Parameters:
text - the text to append.

setTransportSelectorBoxVisible

public void setTransportSelectorBoxVisible(boolean isVisible)
Parameters:
isVisible -

setSelectedChatTransport

public void setSelectedChatTransport(ChatTransport chatTransport)
Selects the given chat transport in the send via box.

Parameters:
chatTransport - the chat transport to be selected

addChatTransport

public void addChatTransport(ChatTransport chatTransport)
Adds the given chatTransport to the given send via selector box.

Parameters:
chatTransport - the transport to add

updateChatTransportStatus

public void updateChatTransportStatus(ChatTransport chatTransport)
Updates the status of the given chat transport in the send via selector box and notifies the user for the status change.

Parameters:
chatTransport - the chatTransport to update

openChatTransportSelectorBox

public void openChatTransportSelectorBox()
Opens the selector box containing the protocol contact icons. This is the menu, where user could select the protocol specific contact to communicate through.


removeChatTransport

public void removeChatTransport(ChatTransport chatTransport)
Removes the given chat status state from the send via selector box.

Parameters:
chatTransport - the transport to remove

setSmsLabelVisible

public void setSmsLabelVisible(boolean isVisible)
Show the sms menu.

Parameters:
isVisible - true to show the sms menu, false - otherwise

saveDefaultFontConfiguration

public void saveDefaultFontConfiguration(String fontFamily,
                                         int fontSize,
                                         boolean isBold,
                                         boolean isItalic,
                                         boolean isUnderline,
                                         Color color)
Saves the given font configuration as default, thus making it the default configuration for all chats.

Parameters:
fontFamily - the font family
fontSize - the font size
isBold - indicates if the font is bold
isItalic - indicates if the font is italic
isUnderline - indicates if the font is underline

setFontFamilyAndSize

public void setFontFamilyAndSize(String family,
                                 int size)
Sets the font family and size

Parameters:
family - the family name
size - the size

setBoldStyleEnable

public void setBoldStyleEnable(boolean b)
Enables the bold style

Parameters:
b - TRUE enable - FALSE disable

setItalicStyleEnable

public void setItalicStyleEnable(boolean b)
Enables the italic style

Parameters:
b - TRUE enable - FALSE disable

setUnderlineStyleEnable

public void setUnderlineStyleEnable(boolean b)
Enables the underline style

Parameters:
b - TRUE enable - FALSE disable

setFontColor

public void setFontColor(Color color)
Sets the font color

Parameters:
color - the color

addChatEditorMenuListener

public void addChatEditorMenuListener(ChatMenuListener l)
Adds the given ChatMenuListener to this Chat. The ChatMenuListener is used to determine menu elements that should be added on right clicks.

Parameters:
l - the ChatMenuListener to add

removeChatEditorMenuListener

public void removeChatEditorMenuListener(ChatMenuListener l)
Removes the given ChatMenuListener to this Chat. The ChatMenuListener is used to determine menu elements that should be added on right clicks.

Parameters:
l - the ChatMenuListener to add

loadSkin

public void loadSkin()
Reloads menu.

Specified by:
loadSkin in interface Skinnable

changedUpdate

public void changedUpdate(DocumentEvent documentevent)
Specified by:
changedUpdate in interface DocumentListener

insertUpdate

public void insertUpdate(DocumentEvent event)
Updates write panel size and adjusts sms properties if the sms menu is visible.

Specified by:
insertUpdate in interface DocumentListener
Parameters:
event - the DocumentEvent that notified us

removeUpdate

public void removeUpdate(DocumentEvent event)
Updates write panel size and adjusts sms properties if the sms menu is visible.

Specified by:
removeUpdate in interface DocumentListener
Parameters:
event - the DocumentEvent that notified us

Jitsi: the OpenSource Java VoIP and Instant Messaging client.

Jitsi, the OpenSource Java VoIP and Instant Messaging client.
Distributable under LGPL license.