[sip-comm-dev] Re: svn commit: r4663 - trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java


#1

Ben,

it seems that something in your modifications has broken the chat. When I sent a message on the other side it is shown with all html tags. Hope you don't mind that I'm reverting the change until we find the problem.

Cheers,
Yana

pradelle@dev.java.net wrote:

···

Author: pradelle
Date: 2008-10-30 03:56:57+0000
New Revision: 4663

Modified:
   trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java

Log:
Update the behavior of the text attributes:
- The color label remains unchanged when the user clicks in the send message field when it is empty
- The color choice is not anymore forgotten when the content of the send message field is removed
- The color label is now always updated with the color of the character just before the carret
- The font settings are not anymore forgotten when the user clicks in the send message field when it is empty
- The font attributes of a selection is now the AND of the attributes of all the selected characters

All these changes have been made to provide a behavior usually found in text editors. The last item still not updated is to remind the font attributes when the user erase the content of the send message field.

Modified: trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java?view=diff&rev=4663&p1=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&p2=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&r1=4662&r2=4663

--- trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java (original)
+++ trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java 2008-10-30 03:56:57+0000
@@ -233,17 +233,21 @@
         {
             public void keyTyped(KeyEvent e)
             {
- if (chatWritePanel.getText().length() > 0)
+ // The editor pane seems to forget the formatting when it is
+ // empty so we use the interface as a reminder for it
+ if (chatEditorPane.getDocument().getLength() == 0)
                 {
- Color currentColor
- = (Color) ((HTMLEditorKit) chatEditorPane
- .getEditorKit()).getInputAttributes().getAttribute(
- StyleConstants.Foreground);
-
- if (currentColor != null)
- colorLabel.setBackground(currentColor);
- else
- colorLabel.setBackground(Color.BLACK);
+ Color newColor = colorLabel.getBackground();
+ + ActionEvent evt =
+ new ActionEvent(chatEditorPane,
+ ActionEvent.ACTION_PERFORMED, "");
+ + Action action =
+ new HTMLEditorKit.ForegroundAction(new Integer(newColor
+ .getRGB()).toString(), newColor);
+ + action.actionPerformed(evt);
                 }
             }
         });
@@ -326,6 +330,8 @@
          chatEditorPane.addKeyListener(new KeyAdapter()
         {
+ private boolean wasEmpty = false;
+ public void keyTyped(KeyEvent e)
             {
                 if (chatEditorPane.getText().length() > 0)
@@ -359,33 +365,70 @@
                                 final JToggleButton button)
      {
+ /*
+ // use the last settings if the pane is empty
+ if (chatEditorPane.getDocument().getLength() == 0) + {
+ return;
+ }
+ */
+ boolean selected = false;
+ // if nothing is selected
         if (chatEditorPane.getSelectedText() == null)
         {
             int index = chatEditorPane.getCaretPosition();
- selected =
+ + // if we are at the beginning of the document, use the style of the
+ // first character
+ if (index == 0) {
+ index = 1;
+ }
+ + // use the style of the character preceding the carret
+ AttributeSet attributes =
                 ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index - 1).getAttributes()
- .containsAttribute(styleConstant, true);
+ .getCharacterElement(index - 1).getAttributes();
+ + if (attributes.getAttribute(styleConstant) != null)
+ {
+ selected = attributes.containsAttribute(styleConstant, true);
+ }
         }
         else
         {
- for (int index = chatEditorPane.getSelectionStart();
- index < chatEditorPane.getSelectionEnd(); index++)
+ int index = chatEditorPane.getSelectionStart();
+ + // initialize selected with the first character attributes
+ if (index < chatEditorPane.getSelectionEnd()) {
+ AttributeSet attributes =
+ ((HTMLDocument) chatEditorPane.getDocument())
+ .getCharacterElement(index).getAttributes();
+ + if (attributes.getAttribute(styleConstant) != null)
+ {
+ selected = attributes
+ .containsAttribute(styleConstant, true);
+ }
+ }
+ + // AND all the attributes to determine the global attribute
+ for (index++; index < chatEditorPane.getSelectionEnd(); index++)
             {
                 AttributeSet attributes =
                     ((HTMLDocument) chatEditorPane.getDocument())
                         .getCharacterElement(index).getAttributes();
- selected =
- selected
- || attributes.containsAttribute(styleConstant, true);
+ if (attributes.getAttribute(styleConstant) != null)
+ {
+ selected = selected
+ && attributes.containsAttribute(styleConstant, true);
+ }
             }
         }
- if (chatEditorPane.getText().length() > 0)
- button.setSelected(selected);
+ button.setSelected(selected);
     }
      /**
@@ -397,34 +440,34 @@
     private void selectColor( final Object styleConstant,
                                 final JLabel colorLabel)
     {
- Object selectedAttribute = null;
-
- if (chatEditorPane.getSelectedText() == null)
+ // use the last settings if the pane is empty
+ if (chatEditorPane.getDocument().getLength() == 0) {
- int index = chatEditorPane.getCaretPosition();
- selectedAttribute =
- ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index - 1).getAttributes()
- .getAttribute(styleConstant);
+ return;
         }
- else
- {
- for (int index = chatEditorPane.getSelectionStart();
- index < chatEditorPane.getSelectionEnd(); index++)
- {
- AttributeSet attributes =
- ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index).getAttributes();
- if (attributes.getAttribute(styleConstant) != null)
- selectedAttribute = attributes.getAttribute(styleConstant);
- }
+ int index = chatEditorPane.getCaretPosition();
+ + // if we are at the beginning of the document, use the style of the
+ // first character
+ if (index == 0) {
+ index = 1;
         }
+ + // use the style of the character preceding the carret
+ AttributeSet attributes =
+ ((HTMLDocument) chatEditorPane.getDocument())
+ .getCharacterElement(index - 1).getAttributes();
- if (selectedAttribute != null)
- colorLabel.setBackground((Color)selectedAttribute);
- else
+ if (attributes.getAttribute(styleConstant) != null)
+ {
+ Object selectedAttribute = attributes.getAttribute(styleConstant);
+ colorLabel.setBackground((Color) selectedAttribute);
+ }
+ else + {
             colorLabel.setBackground(Color.BLACK);
+ }
     }
      /**

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: commits-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#2

Hi Yana, Emil, all,

Oops, I'm sorry about that, yes of course we can reverse it. Can you please
do it as I won't have access to the sources until many hours?

Thanks,

Ben

···

2008/10/30 Yana Stamcheva <yana@sip-communicator.org>

Ben,

it seems that something in your modifications has broken the chat. When I
sent a message on the other side it is shown with all html tags. Hope you
don't mind that I'm reverting the change until we find the problem.

Cheers,
Yana

pradelle@dev.java.net wrote:

Author: pradelle
Date: 2008-10-30 03:56:57+0000
New Revision: 4663

Modified:

trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java

Log:
Update the behavior of the text attributes:
- The color label remains unchanged when the user clicks in the send
message field when it is empty
- The color choice is not anymore forgotten when the content of the send
message field is removed
- The color label is now always updated with the color of the character
just before the carret
- The font settings are not anymore forgotten when the user clicks in the
send message field when it is empty
- The font attributes of a selection is now the AND of the attributes of
all the selected characters

All these changes have been made to provide a behavior usually found in
text editors. The last item still not updated is to remind the font
attributes when the user erase the content of the send message field.

Modified:
trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
Url:
https://sip-communicator.dev.java.net/source/browse/sip-communicator/trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java?view=diff&rev=4663&p1=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&p2=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&r1=4662&r2=4663

==============================================================================
---
trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
       (original)
+++
trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
       2008-10-30 03:56:57+0000
@@ -233,17 +233,21 @@
        {
            public void keyTyped(KeyEvent e)
            {
- if (chatWritePanel.getText().length() > 0)
+ // The editor pane seems to forget the formatting when it
is
+ // empty so we use the interface as a reminder for it
+ if (chatEditorPane.getDocument().getLength() == 0)
                {
- Color currentColor
- = (Color) ((HTMLEditorKit) chatEditorPane
-
.getEditorKit()).getInputAttributes().getAttribute(
- StyleConstants.Foreground);
-
- if (currentColor != null)
- colorLabel.setBackground(currentColor);
- else
- colorLabel.setBackground(Color.BLACK);
+ Color newColor = colorLabel.getBackground();
+ + ActionEvent evt =
+ new ActionEvent(chatEditorPane,
+ ActionEvent.ACTION_PERFORMED, "");
+ + Action action =
+ new HTMLEditorKit.ForegroundAction(new
Integer(newColor
+ .getRGB()).toString(), newColor);
+ + action.actionPerformed(evt);
                }
            }
        });
@@ -326,6 +330,8 @@
          chatEditorPane.addKeyListener(new KeyAdapter()
        {
+ private boolean wasEmpty = false;
+ public void keyTyped(KeyEvent e)
            {
                if (chatEditorPane.getText().length() > 0)
@@ -359,33 +365,70 @@
                                final JToggleButton button)
      {
+ /*
+ // use the last settings if the pane is empty
+ if (chatEditorPane.getDocument().getLength() == 0) + {
+ return;
+ }
+ */
+ boolean selected = false;
+ // if nothing is selected
        if (chatEditorPane.getSelectedText() == null)
        {
            int index = chatEditorPane.getCaretPosition();
- selected =
+ + // if we are at the beginning of the document,
use the style of the
+ // first character
+ if (index == 0) {
+ index = 1;
+ }
+ + // use the style of the character preceding the
carret
+ AttributeSet attributes =
                ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index - 1).getAttributes()
- .containsAttribute(styleConstant, true);
+ .getCharacterElement(index - 1).getAttributes();
+ + if (attributes.getAttribute(styleConstant) !=
null)
+ {
+ selected = attributes.containsAttribute(styleConstant,
true);
+ }
        }
        else
        {
- for (int index = chatEditorPane.getSelectionStart();
- index < chatEditorPane.getSelectionEnd(); index++)
+ int index = chatEditorPane.getSelectionStart();
+ + // initialize selected with the first character
attributes
+ if (index < chatEditorPane.getSelectionEnd()) {
+ AttributeSet attributes =
+ ((HTMLDocument) chatEditorPane.getDocument())
+ .getCharacterElement(index).getAttributes();
+ + if
(attributes.getAttribute(styleConstant) != null)
+ {
+ selected = attributes
+ .containsAttribute(styleConstant, true);
+ }
+ }
+ + // AND all the attributes to determine the
global attribute
+ for (index++; index < chatEditorPane.getSelectionEnd();
index++)
            {
                AttributeSet attributes =
                    ((HTMLDocument) chatEditorPane.getDocument())
                        .getCharacterElement(index).getAttributes();
- selected =
- selected
- || attributes.containsAttribute(styleConstant,
true);
+ if (attributes.getAttribute(styleConstant) != null)
+ {
+ selected = selected
+ && attributes.containsAttribute(styleConstant,
true);
+ }
            }
        }
- if (chatEditorPane.getText().length() > 0)
- button.setSelected(selected);
+ button.setSelected(selected);
    }
      /**
@@ -397,34 +440,34 @@
    private void selectColor( final Object styleConstant,
                                final JLabel colorLabel)
    {
- Object selectedAttribute = null;
-
- if (chatEditorPane.getSelectedText() == null)
+ // use the last settings if the pane is empty
+ if (chatEditorPane.getDocument().getLength() == 0) {
- int index = chatEditorPane.getCaretPosition();
- selectedAttribute =
- ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index - 1).getAttributes()
- .getAttribute(styleConstant);
+ return;
        }
- else
- {
- for (int index = chatEditorPane.getSelectionStart();
- index < chatEditorPane.getSelectionEnd(); index++)
- {
- AttributeSet attributes =
- ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index).getAttributes();
- if (attributes.getAttribute(styleConstant) != null)
- selectedAttribute =
attributes.getAttribute(styleConstant);
- }
+ int index = chatEditorPane.getCaretPosition();
+ + // if we are at the beginning of the document, use the
style of the
+ // first character
+ if (index == 0) {
+ index = 1;
        }
+ + // use the style of the character preceding the carret
+ AttributeSet attributes =
+ ((HTMLDocument) chatEditorPane.getDocument())
+ .getCharacterElement(index - 1).getAttributes();
- if (selectedAttribute != null)
- colorLabel.setBackground((Color)selectedAttribute);
- else
+ if (attributes.getAttribute(styleConstant) != null)
+ {
+ Object selectedAttribute =
attributes.getAttribute(styleConstant);
+ colorLabel.setBackground((Color) selectedAttribute);
+ }
+ else + {
            colorLabel.setBackground(Color.BLACK);
+ }
    }
      /**

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail:
commits-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#3

Just FYI, this was also breaking my XMPP messaging. Every outgoing
message seemed to be causing smack to disconnect. Looks like a problem
with the html syntax.

Cheers
Emil

Yana Stamcheva написа:

···

Ben,

it seems that something in your modifications has broken the chat. When
I sent a message on the other side it is shown with all html tags. Hope
you don't mind that I'm reverting the change until we find the problem.

Cheers,
Yana

pradelle@dev.java.net wrote:

Author: pradelle
Date: 2008-10-30 03:56:57+0000
New Revision: 4663

Modified:
   trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java

Log:
Update the behavior of the text attributes:
- The color label remains unchanged when the user clicks in the send message field when it is empty
- The color choice is not anymore forgotten when the content of the send message field is removed
- The color label is now always updated with the color of the character just before the carret
- The font settings are not anymore forgotten when the user clicks in the send message field when it is empty
- The font attributes of a selection is now the AND of the attributes of all the selected characters

All these changes have been made to provide a behavior usually found in text editors. The last item still not updated is to remind the font attributes when the user erase the content of the send message field.

Modified: trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
Url: https://sip-communicator.dev.java.net/source/browse/sip-communicator/trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java?view=diff&rev=4663&p1=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&p2=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&r1=4662&r2=4663

--- trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java (original)
+++ trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java 2008-10-30 03:56:57+0000
@@ -233,17 +233,21 @@
         {
             public void keyTyped(KeyEvent e)
             {
- if (chatWritePanel.getText().length() > 0)
+ // The editor pane seems to forget the formatting when it is
+ // empty so we use the interface as a reminder for it
+ if (chatEditorPane.getDocument().getLength() == 0)
                 {
- Color currentColor
- = (Color) ((HTMLEditorKit) chatEditorPane
- .getEditorKit()).getInputAttributes().getAttribute(
- StyleConstants.Foreground);
-
- if (currentColor != null)
- colorLabel.setBackground(currentColor);
- else
- colorLabel.setBackground(Color.BLACK);
+ Color newColor = colorLabel.getBackground();
+
+ ActionEvent evt =
+ new ActionEvent(chatEditorPane,
+ ActionEvent.ACTION_PERFORMED, "");
+
+ Action action =
+ new HTMLEditorKit.ForegroundAction(new Integer(newColor
+ .getRGB()).toString(), newColor);
+
+ action.actionPerformed(evt);
                 }
             }
         });
@@ -326,6 +330,8 @@

         chatEditorPane.addKeyListener(new KeyAdapter()
         {
+ private boolean wasEmpty = false;
+
             public void keyTyped(KeyEvent e)
             {
                 if (chatEditorPane.getText().length() > 0)
@@ -359,33 +365,70 @@
                                 final JToggleButton button)

     {
+ /*
+ // use the last settings if the pane is empty
+ if (chatEditorPane.getDocument().getLength() == 0)
+ {
+ return;
+ }
+ */
+
         boolean selected = false;

+ // if nothing is selected
         if (chatEditorPane.getSelectedText() == null)
         {
             int index = chatEditorPane.getCaretPosition();
- selected =
+
+ // if we are at the beginning of the document, use the style of the
+ // first character
+ if (index == 0) {
+ index = 1;
+ }
+
+ // use the style of the character preceding the carret
+ AttributeSet attributes =
                 ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index - 1).getAttributes()
- .containsAttribute(styleConstant, true);
+ .getCharacterElement(index - 1).getAttributes();
+
+ if (attributes.getAttribute(styleConstant) != null)
+ {
+ selected = attributes.containsAttribute(styleConstant, true);
+ }
         }
         else
         {
- for (int index = chatEditorPane.getSelectionStart();
- index < chatEditorPane.getSelectionEnd(); index++)
+ int index = chatEditorPane.getSelectionStart();
+
+ // initialize selected with the first character attributes
+ if (index < chatEditorPane.getSelectionEnd()) {
+ AttributeSet attributes =
+ ((HTMLDocument) chatEditorPane.getDocument())
+ .getCharacterElement(index).getAttributes();
+
+ if (attributes.getAttribute(styleConstant) != null)
+ {
+ selected = attributes
+ .containsAttribute(styleConstant, true);
+ }
+ }
+
+ // AND all the attributes to determine the global attribute
+ for (index++; index < chatEditorPane.getSelectionEnd(); index++)
             {
                 AttributeSet attributes =
                     ((HTMLDocument) chatEditorPane.getDocument())
                         .getCharacterElement(index).getAttributes();

- selected =
- selected
- || attributes.containsAttribute(styleConstant, true);
+ if (attributes.getAttribute(styleConstant) != null)
+ {
+ selected = selected
+ && attributes.containsAttribute(styleConstant, true);
+ }
             }
         }

- if (chatEditorPane.getText().length() > 0)
- button.setSelected(selected);
+ button.setSelected(selected);
     }

     /**
@@ -397,34 +440,34 @@
     private void selectColor( final Object styleConstant,
                                 final JLabel colorLabel)
     {
- Object selectedAttribute = null;
-
- if (chatEditorPane.getSelectedText() == null)
+ // use the last settings if the pane is empty
+ if (chatEditorPane.getDocument().getLength() == 0)
         {
- int index = chatEditorPane.getCaretPosition();
- selectedAttribute =
- ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index - 1).getAttributes()
- .getAttribute(styleConstant);
+ return;
         }
- else
- {
- for (int index = chatEditorPane.getSelectionStart();
- index < chatEditorPane.getSelectionEnd(); index++)
- {
- AttributeSet attributes =
- ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index).getAttributes();

- if (attributes.getAttribute(styleConstant) != null)
- selectedAttribute = attributes.getAttribute(styleConstant);
- }
+ int index = chatEditorPane.getCaretPosition();
+
+ // if we are at the beginning of the document, use the style of the
+ // first character
+ if (index == 0) {
+ index = 1;
         }
+
+ // use the style of the character preceding the carret
+ AttributeSet attributes =
+ ((HTMLDocument) chatEditorPane.getDocument())
+ .getCharacterElement(index - 1).getAttributes();

- if (selectedAttribute != null)
- colorLabel.setBackground((Color)selectedAttribute);
- else
+ if (attributes.getAttribute(styleConstant) != null)
+ {
+ Object selectedAttribute = attributes.getAttribute(styleConstant);
+ colorLabel.setBackground((Color) selectedAttribute);
+ }
+ else
+ {
             colorLabel.setBackground(Color.BLACK);
+ }
     }

     /**

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: commits-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#4

Hi Ben

no worries, I've reverted it.

Cheers,
Yana

Benoit Pradelle wrote:

···

Hi Yana, Emil, all,

Oops, I'm sorry about that, yes of course we can reverse it. Can you please
do it as I won't have access to the sources until many hours?

Thanks,

Ben

2008/10/30 Yana Stamcheva <yana@sip-communicator.org>

Ben,

it seems that something in your modifications has broken the chat. When I
sent a message on the other side it is shown with all html tags. Hope you
don't mind that I'm reverting the change until we find the problem.

Cheers,
Yana

pradelle@dev.java.net wrote:

Author: pradelle
Date: 2008-10-30 03:56:57+0000
New Revision: 4663

Modified:

trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java

Log:
Update the behavior of the text attributes:
- The color label remains unchanged when the user clicks in the send
message field when it is empty
- The color choice is not anymore forgotten when the content of the send
message field is removed
- The color label is now always updated with the color of the character
just before the carret
- The font settings are not anymore forgotten when the user clicks in the
send message field when it is empty
- The font attributes of a selection is now the AND of the attributes of
all the selected characters

All these changes have been made to provide a behavior usually found in
text editors. The last item still not updated is to remind the font
attributes when the user erase the content of the send message field.

Modified:
trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
Url:
https://sip-communicator.dev.java.net/source/browse/sip-communicator/trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java?view=diff&rev=4663&p1=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&p2=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&r1=4662&r2=4663

==============================================================================
---
trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
       (original)
+++
trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
       2008-10-30 03:56:57+0000
@@ -233,17 +233,21 @@
        {
            public void keyTyped(KeyEvent e)
            {
- if (chatWritePanel.getText().length() > 0)
+ // The editor pane seems to forget the formatting when it
is
+ // empty so we use the interface as a reminder for it
+ if (chatEditorPane.getDocument().getLength() == 0)
                {
- Color currentColor
- = (Color) ((HTMLEditorKit) chatEditorPane
-
.getEditorKit()).getInputAttributes().getAttribute(
- StyleConstants.Foreground);
-
- if (currentColor != null)
- colorLabel.setBackground(currentColor);
- else
- colorLabel.setBackground(Color.BLACK);
+ Color newColor = colorLabel.getBackground();
+ + ActionEvent evt =
+ new ActionEvent(chatEditorPane,
+ ActionEvent.ACTION_PERFORMED, "");
+ + Action action =
+ new HTMLEditorKit.ForegroundAction(new
Integer(newColor
+ .getRGB()).toString(), newColor);
+ + action.actionPerformed(evt);
                }
            }
        });
@@ -326,6 +330,8 @@
          chatEditorPane.addKeyListener(new KeyAdapter()
        {
+ private boolean wasEmpty = false;
+ public void keyTyped(KeyEvent e)
            {
                if (chatEditorPane.getText().length() > 0)
@@ -359,33 +365,70 @@
                                final JToggleButton button)
      {
+ /*
+ // use the last settings if the pane is empty
+ if (chatEditorPane.getDocument().getLength() == 0) + {
+ return;
+ }
+ */
+ boolean selected = false;
+ // if nothing is selected
        if (chatEditorPane.getSelectedText() == null)
        {
            int index = chatEditorPane.getCaretPosition();
- selected =
+ + // if we are at the beginning of the document,
use the style of the
+ // first character
+ if (index == 0) {
+ index = 1;
+ }
+ + // use the style of the character preceding the
carret
+ AttributeSet attributes =
                ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index - 1).getAttributes()
- .containsAttribute(styleConstant, true);
+ .getCharacterElement(index - 1).getAttributes();
+ + if (attributes.getAttribute(styleConstant) !=
null)
+ {
+ selected = attributes.containsAttribute(styleConstant,
true);
+ }
        }
        else
        {
- for (int index = chatEditorPane.getSelectionStart();
- index < chatEditorPane.getSelectionEnd(); index++)
+ int index = chatEditorPane.getSelectionStart();
+ + // initialize selected with the first character
attributes
+ if (index < chatEditorPane.getSelectionEnd()) {
+ AttributeSet attributes =
+ ((HTMLDocument) chatEditorPane.getDocument())
+ .getCharacterElement(index).getAttributes();
+ + if
(attributes.getAttribute(styleConstant) != null)
+ {
+ selected = attributes
+ .containsAttribute(styleConstant, true);
+ }
+ }
+ + // AND all the attributes to determine the
global attribute
+ for (index++; index < chatEditorPane.getSelectionEnd();
index++)
            {
                AttributeSet attributes =
                    ((HTMLDocument) chatEditorPane.getDocument())
                        .getCharacterElement(index).getAttributes();
- selected =
- selected
- || attributes.containsAttribute(styleConstant,
true);
+ if (attributes.getAttribute(styleConstant) != null)
+ {
+ selected = selected
+ && attributes.containsAttribute(styleConstant,
true);
+ }
            }
        }
- if (chatEditorPane.getText().length() > 0)
- button.setSelected(selected);
+ button.setSelected(selected);
    }
      /**
@@ -397,34 +440,34 @@
    private void selectColor( final Object styleConstant,
                                final JLabel colorLabel)
    {
- Object selectedAttribute = null;
-
- if (chatEditorPane.getSelectedText() == null)
+ // use the last settings if the pane is empty
+ if (chatEditorPane.getDocument().getLength() == 0) {
- int index = chatEditorPane.getCaretPosition();
- selectedAttribute =
- ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index - 1).getAttributes()
- .getAttribute(styleConstant);
+ return;
        }
- else
- {
- for (int index = chatEditorPane.getSelectionStart();
- index < chatEditorPane.getSelectionEnd(); index++)
- {
- AttributeSet attributes =
- ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index).getAttributes();
- if (attributes.getAttribute(styleConstant) != null)
- selectedAttribute =
attributes.getAttribute(styleConstant);
- }
+ int index = chatEditorPane.getCaretPosition();
+ + // if we are at the beginning of the document, use the
style of the
+ // first character
+ if (index == 0) {
+ index = 1;
        }
+ + // use the style of the character preceding the carret
+ AttributeSet attributes =
+ ((HTMLDocument) chatEditorPane.getDocument())
+ .getCharacterElement(index - 1).getAttributes();
- if (selectedAttribute != null)
- colorLabel.setBackground((Color)selectedAttribute);
- else
+ if (attributes.getAttribute(styleConstant) != null)
+ {
+ Object selectedAttribute =
attributes.getAttribute(styleConstant);
+ colorLabel.setBackground((Color) selectedAttribute);
+ }
+ else + {
            colorLabel.setBackground(Color.BLACK);
+ }
    }
      /**

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail:
commits-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#5

Hi again,

Thank you for taking care of that.

I'm still wondering one thing: why all the cruise control tests passed if so
many things were broken?

Ben

···

2008/10/30 Yana Stamcheva <yana@sip-communicator.org>

Hi Ben

no worries, I've reverted it.

Cheers,
Yana

Benoit Pradelle wrote:

Hi Yana, Emil, all,

Oops, I'm sorry about that, yes of course we can reverse it. Can you
please
do it as I won't have access to the sources until many hours?

Thanks,

Ben

2008/10/30 Yana Stamcheva <yana@sip-communicator.org>

Ben,

it seems that something in your modifications has broken the chat. When I
sent a message on the other side it is shown with all html tags. Hope you
don't mind that I'm reverting the change until we find the problem.

Cheers,
Yana

pradelle@dev.java.net wrote:

Author: pradelle

Date: 2008-10-30 03:56:57+0000
New Revision: 4663

Modified:

trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java

Log:
Update the behavior of the text attributes:
- The color label remains unchanged when the user clicks in the send
message field when it is empty
- The color choice is not anymore forgotten when the content of the send
message field is removed
- The color label is now always updated with the color of the character
just before the carret
- The font settings are not anymore forgotten when the user clicks in
the
send message field when it is empty
- The font attributes of a selection is now the AND of the attributes of
all the selected characters

All these changes have been made to provide a behavior usually found in
text editors. The last item still not updated is to remind the font
attributes when the user erase the content of the send message field.

Modified:

trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
Url:

https://sip-communicator.dev.java.net/source/browse/sip-communicator/trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java?view=diff&rev=4663&p1=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&p2=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&r1=4662&r2=4663

==============================================================================
---

trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
      (original)
+++

trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
      2008-10-30 03:56:57+0000
@@ -233,17 +233,21 @@
       {
           public void keyTyped(KeyEvent e)
           {
- if (chatWritePanel.getText().length() > 0)
+ // The editor pane seems to forget the formatting when
it
is
+ // empty so we use the interface as a reminder for it
+ if (chatEditorPane.getDocument().getLength() == 0)
               {
- Color currentColor
- = (Color) ((HTMLEditorKit) chatEditorPane
-
.getEditorKit()).getInputAttributes().getAttribute(
- StyleConstants.Foreground);
-
- if (currentColor != null)
- colorLabel.setBackground(currentColor);
- else
- colorLabel.setBackground(Color.BLACK);
+ Color newColor = colorLabel.getBackground();
+ + ActionEvent evt =
+ new ActionEvent(chatEditorPane,
+ ActionEvent.ACTION_PERFORMED, "");
+ + Action action =
+ new HTMLEditorKit.ForegroundAction(new
Integer(newColor
+ .getRGB()).toString(), newColor);
+ + action.actionPerformed(evt);
               }
           }
       });
@@ -326,6 +330,8 @@
         chatEditorPane.addKeyListener(new KeyAdapter()
       {
+ private boolean wasEmpty = false;
+ public void keyTyped(KeyEvent e)
           {
               if (chatEditorPane.getText().length() > 0)
@@ -359,33 +365,70 @@
                               final JToggleButton button)
     {
+ /*
+ // use the last settings if the pane is empty
+ if (chatEditorPane.getDocument().getLength() == 0) + {
+ return;
+ }
+ */
+ boolean selected = false;
+ // if nothing is selected
       if (chatEditorPane.getSelectedText() == null)
       {
           int index = chatEditorPane.getCaretPosition();
- selected =
+ + // if we are at the beginning of the document,
use the style of the
+ // first character
+ if (index == 0) {
+ index = 1;
+ }
+ + // use the style of the character preceding
the
carret
+ AttributeSet attributes =
               ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index - 1).getAttributes()
- .containsAttribute(styleConstant, true);
+ .getCharacterElement(index - 1).getAttributes();
+ + if (attributes.getAttribute(styleConstant) !=
null)
+ {
+ selected = attributes.containsAttribute(styleConstant,
true);
+ }
       }
       else
       {
- for (int index = chatEditorPane.getSelectionStart();
- index < chatEditorPane.getSelectionEnd(); index++)
+ int index = chatEditorPane.getSelectionStart();
+ + // initialize selected with the first
character
attributes
+ if (index < chatEditorPane.getSelectionEnd()) {
+ AttributeSet attributes =
+ ((HTMLDocument) chatEditorPane.getDocument())
+ .getCharacterElement(index).getAttributes();
+ + if
(attributes.getAttribute(styleConstant) != null)
+ {
+ selected = attributes
+ .containsAttribute(styleConstant, true);
+ }
+ }
+ + // AND all the attributes to determine the
global attribute
+ for (index++; index < chatEditorPane.getSelectionEnd();
index++)
           {
               AttributeSet attributes =
                   ((HTMLDocument) chatEditorPane.getDocument())
                       .getCharacterElement(index).getAttributes();
- selected =
- selected
- || attributes.containsAttribute(styleConstant,
true);
+ if (attributes.getAttribute(styleConstant) != null)
+ {
+ selected = selected
+ && attributes.containsAttribute(styleConstant,
true);
+ }
           }
       }
- if (chatEditorPane.getText().length() > 0)
- button.setSelected(selected);
+ button.setSelected(selected);
   }
     /**
@@ -397,34 +440,34 @@
   private void selectColor( final Object styleConstant,
                               final JLabel colorLabel)
   {
- Object selectedAttribute = null;
-
- if (chatEditorPane.getSelectedText() == null)
+ // use the last settings if the pane is empty
+ if (chatEditorPane.getDocument().getLength() == 0) {
- int index = chatEditorPane.getCaretPosition();
- selectedAttribute =
- ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index - 1).getAttributes()
- .getAttribute(styleConstant);
+ return;
       }
- else
- {
- for (int index = chatEditorPane.getSelectionStart();
- index < chatEditorPane.getSelectionEnd(); index++)
- {
- AttributeSet attributes =
- ((HTMLDocument) chatEditorPane.getDocument())
- .getCharacterElement(index).getAttributes();
- if (attributes.getAttribute(styleConstant) != null)
- selectedAttribute =
attributes.getAttribute(styleConstant);
- }
+ int index = chatEditorPane.getCaretPosition();
+ + // if we are at the beginning of the document, use the
style of the
+ // first character
+ if (index == 0) {
+ index = 1;
       }
+ + // use the style of the character preceding the carret
+ AttributeSet attributes =
+ ((HTMLDocument) chatEditorPane.getDocument())
+ .getCharacterElement(index - 1).getAttributes();
- if (selectedAttribute != null)
- colorLabel.setBackground((Color)selectedAttribute);
- else
+ if (attributes.getAttribute(styleConstant) != null)
+ {
+ Object selectedAttribute =
attributes.getAttribute(styleConstant);
+ colorLabel.setBackground((Color) selectedAttribute);
+ }
+ else + {
           colorLabel.setBackground(Color.BLACK);
+ }
   }
     /**

---------------------------------------------------------------------
To unsubscribe, e-mail:
commits-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail:
commits-help@sip-communicator.dev.java.net

---------------------------------------------------------------------

To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#6

Hey Ben,

I'm still wondering one thing: why all the cruise control tests passed
if so many things were broken?

Hey that's a good question! You got me wondering there for a while.

The thing is that the unit tests access the protocol provider and its
messaging op set directly. They do not depend on the ui service.

I am guessing that the problem was caused by the fact that the UI was
feeding invalid html to the jabber provider. Given its XML nature, the
jabber provider needs to escape html format tags in messages, so it goes
through some basic parsing. This is probably where things were breaking
during runtime and this is a case that we are absolutely not covering
during testing.

It's been a while now but I remember that a year or so ago we were
wondering how best to test the UI. We were thinking that we should
probably add a bunch of tests that would test SC as a whole in addition
to the existing tests that test modules separately. Unfortunately even
though it seemed to be generally accepted that this would be a great
idea, we couldn't come up with a scheme that was reasonably easy to
integrate in the project.

Emil

···

Ben

2008/10/30 Yana Stamcheva <yana@sip-communicator.org
<mailto:yana@sip-communicator.org>>

    Hi Ben

    no worries, I've reverted it.

    Cheers,
    Yana

    Benoit Pradelle wrote:

        Hi Yana, Emil, all,

        Oops, I'm sorry about that, yes of course we can reverse it. Can
        you please
        do it as I won't have access to the sources until many hours?

        Thanks,

        Ben

        2008/10/30 Yana Stamcheva <yana@sip-communicator.org
        <mailto:yana@sip-communicator.org>>

            Ben,

            it seems that something in your modifications has broken the
            chat. When I
            sent a message on the other side it is shown with all html
            tags. Hope you
            don't mind that I'm reverting the change until we find the
            problem.

            Cheers,
            Yana

            pradelle@dev.java.net <mailto:pradelle@dev.java.net> wrote:

                Author: pradelle
                Date: 2008-10-30 03:56:57+0000
                New Revision: 4663

                Modified:

                trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java

                Log:
                Update the behavior of the text attributes:
                - The color label remains unchanged when the user clicks
                in the send
                message field when it is empty
                - The color choice is not anymore forgotten when the
                content of the send
                message field is removed
                - The color label is now always updated with the color
                of the character
                just before the carret
                - The font settings are not anymore forgotten when the
                user clicks in the
                send message field when it is empty
                - The font attributes of a selection is now the AND of
                the attributes of
                all the selected characters

                All these changes have been made to provide a behavior
                usually found in
                text editors. The last item still not updated is to
                remind the font
                attributes when the user erase the content of the send
                message field.

                Modified:
                trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
                Url:
                https://sip-communicator.dev.java.net/source/browse/sip-communicator/trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java?view=diff&rev=4663&p1=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&p2=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&r1=4662&r2=4663
                <https://sip-communicator.dev.java.net/source/browse/sip-communicator/trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java?view=diff&rev=4663&p1=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&p2=trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java&r1=4662&r2=4663>

                ==============================================================================
                ---
                trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
                      (original)
                +++
                trunk/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/EditTextToolBar.java
                      2008-10-30 03:56:57+0000
                @@ -233,17 +233,21 @@
                       {
                           public void keyTyped(KeyEvent e)
                           {
                - if (chatWritePanel.getText().length() > 0)
                + // The editor pane seems to forget the
                formatting when it
                is
                + // empty so we use the interface as a
                reminder for it
                + if
                (chatEditorPane.getDocument().getLength() == 0)
                               {
                - Color currentColor
                - = (Color) ((HTMLEditorKit)
                chatEditorPane
                -
                 .getEditorKit()).getInputAttributes().getAttribute(
                - StyleConstants.Foreground);
                -
                - if (currentColor != null)
                -
                 colorLabel.setBackground(currentColor);
                - else
                -
                 colorLabel.setBackground(Color.BLACK);
                + Color newColor =
                colorLabel.getBackground();
                + + ActionEvent evt =
                + new ActionEvent(chatEditorPane,
                +
                 ActionEvent.ACTION_PERFORMED, "");
                + + Action action =
                + new
                HTMLEditorKit.ForegroundAction(new
                Integer(newColor
                + .getRGB()).toString(),
                newColor);
                + + action.actionPerformed(evt);
                               }
                           }
                       });
                @@ -326,6 +330,8 @@
                         chatEditorPane.addKeyListener(new KeyAdapter()
                       {
                + private boolean wasEmpty = false;
                + public void keyTyped(KeyEvent e)
                           {
                               if (chatEditorPane.getText().length() > 0)
                @@ -359,33 +365,70 @@
                                               final JToggleButton button)
                     {
                + /*
                + // use the last settings if the pane is empty
                + if (chatEditorPane.getDocument().getLength() ==
                0) + {
                + return;
                + }
                + */
                + boolean selected = false;
                 + // if nothing is selected
                       if (chatEditorPane.getSelectedText() == null)
                       {
                           int index = chatEditorPane.getCaretPosition();
                - selected =
                + + // if we are at the beginning
                of the document,
                use the style of the
                + // first character
                + if (index == 0) {
                + index = 1;
                + }
                + + // use the style of the
                character preceding the
                carret
                + AttributeSet attributes =
                               ((HTMLDocument) chatEditorPane.getDocument())
                - .getCharacterElement(index -
                1).getAttributes()
                - .containsAttribute(styleConstant,
                true);
                + .getCharacterElement(index -
                1).getAttributes();
                + + if
                (attributes.getAttribute(styleConstant) !=
                null)
                + {
                + selected =
                attributes.containsAttribute(styleConstant,
                true);
                + }
                       }
                       else
                       {
                - for (int index =
                chatEditorPane.getSelectionStart();
                - index <
                chatEditorPane.getSelectionEnd(); index++)
                + int index = chatEditorPane.getSelectionStart();
                + + // initialize selected with
                the first character
                attributes
                + if (index < chatEditorPane.getSelectionEnd()) {
                + AttributeSet attributes =
                + ((HTMLDocument)
                chatEditorPane.getDocument())
                +
                 .getCharacterElement(index).getAttributes();
                + + if
                (attributes.getAttribute(styleConstant) != null)
                + {
                + selected = attributes
                +
                 .containsAttribute(styleConstant, true);
                + }
                + }
                + + // AND all the attributes to
                determine the
                global attribute
                + for (index++; index <
                chatEditorPane.getSelectionEnd();
                index++)
                           {
                               AttributeSet attributes =
                                   ((HTMLDocument)
                chatEditorPane.getDocument())
                                     
                 .getCharacterElement(index).getAttributes();
                 - selected =
                - selected
                - ||
                attributes.containsAttribute(styleConstant,
                true);
                + if
                (attributes.getAttribute(styleConstant) != null)
                + {
                + selected = selected
                + &&
                attributes.containsAttribute(styleConstant,
                true);
                + }
                           }
                       }
                 - if (chatEditorPane.getText().length() > 0)
                - button.setSelected(selected);
                + button.setSelected(selected);
                   }
                     /**
                @@ -397,34 +440,34 @@
                   private void selectColor( final Object styleConstant,
                                               final JLabel colorLabel)
                   {
                - Object selectedAttribute = null;
                -
                - if (chatEditorPane.getSelectedText() == null)
                + // use the last settings if the pane is empty
                + if (chatEditorPane.getDocument().getLength() ==
                0) {
                - int index = chatEditorPane.getCaretPosition();
                - selectedAttribute =
                - ((HTMLDocument)
                chatEditorPane.getDocument())
                - .getCharacterElement(index -
                1).getAttributes()
                - .getAttribute(styleConstant);
                + return;
                       }
                - else
                - {
                - for (int index =
                chatEditorPane.getSelectionStart();
                - index <
                chatEditorPane.getSelectionEnd(); index++)
                - {
                - AttributeSet attributes =
                - ((HTMLDocument)
                chatEditorPane.getDocument())
                -
                 .getCharacterElement(index).getAttributes();
                 - if
                (attributes.getAttribute(styleConstant) != null)
                - selectedAttribute =
                attributes.getAttribute(styleConstant);
                - }
                + int index = chatEditorPane.getCaretPosition();
                + + // if we are at the beginning of the
                document, use the
                style of the
                + // first character
                + if (index == 0) {
                + index = 1;
                       }
                + + // use the style of the character
                preceding the carret
                + AttributeSet attributes =
                + ((HTMLDocument) chatEditorPane.getDocument())
                + .getCharacterElement(index -
                1).getAttributes();
                 - if (selectedAttribute != null)
                -
                 colorLabel.setBackground((Color)selectedAttribute);
                - else
                + if (attributes.getAttribute(styleConstant) != null)
                + {
                + Object selectedAttribute =
                attributes.getAttribute(styleConstant);
                + colorLabel.setBackground((Color)
                selectedAttribute);
                + }
                + else + {
                           colorLabel.setBackground(Color.BLACK);
                + }
                   }
                     /**

                ---------------------------------------------------------------------
                To unsubscribe, e-mail:
                commits-unsubscribe@sip-communicator.dev.java.net
                <mailto:commits-unsubscribe@sip-communicator.dev.java.net>
                For additional commands, e-mail:
                commits-help@sip-communicator.dev.java.net
                <mailto:commits-help@sip-communicator.dev.java.net>

            ---------------------------------------------------------------------
            To unsubscribe, e-mail:
            dev-unsubscribe@sip-communicator.dev.java.net
            <mailto:dev-unsubscribe@sip-communicator.dev.java.net>
            For additional commands, e-mail:
            dev-help@sip-communicator.dev.java.net
            <mailto:dev-help@sip-communicator.dev.java.net>

    ---------------------------------------------------------------------
    To unsubscribe, e-mail:
    dev-unsubscribe@sip-communicator.dev.java.net
    <mailto:dev-unsubscribe@sip-communicator.dev.java.net>
    For additional commands, e-mail:
    dev-help@sip-communicator.dev.java.net
    <mailto:dev-help@sip-communicator.dev.java.net>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net