From 68549ccdc336c190b087beb6fde7c78dd6b70d32 Mon Sep 17 00:00:00 2001 From: Yana Stamcheva Date: Wed, 14 Jun 2006 10:42:32 +0000 Subject: [PATCH] Turn on/off outgoing typing notifications --- .../SIPCommCheckBoxMenuItemUI.java | 33 ++++++++++++++ .../gui/lookandfeel/SIPCommLookAndFeel.java | 1 + .../impl/gui/main/i18n/messages.properties | 1 + .../impl/gui/main/message/ChatPanel.java | 10 +++++ .../impl/gui/main/message/ChatWritePanel.java | 3 +- .../impl/gui/main/message/menu/FileMenu.java | 1 + .../message/menu/MessageWindowMenuBar.java | 5 ++- .../gui/main/message/menu/SettingsMenu.java | 44 +++++++++++++++++++ 8 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommCheckBoxMenuItemUI.java create mode 100644 src/net/java/sip/communicator/impl/gui/main/message/menu/SettingsMenu.java diff --git a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommCheckBoxMenuItemUI.java b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommCheckBoxMenuItemUI.java new file mode 100644 index 000000000..d68391a86 --- /dev/null +++ b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommCheckBoxMenuItemUI.java @@ -0,0 +1,33 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ +package net.java.sip.communicator.impl.gui.lookandfeel; + +import java.awt.Graphics; + +import javax.swing.JComponent; +import javax.swing.plaf.ComponentUI; +import javax.swing.plaf.basic.BasicCheckBoxMenuItemUI; + +import net.java.sip.communicator.impl.gui.utils.AntialiasingManager; +/** + * The SIPCommCheckBoxMenuItemUI implementation. + * + * @author Yana Stamcheva + */ +public class SIPCommCheckBoxMenuItemUI extends BasicCheckBoxMenuItemUI { + /** + * Creates a new SIPCommCheckBoxMenuItemUI instance. + */ + public static ComponentUI createUI(JComponent x) { + return new SIPCommCheckBoxMenuItemUI(); + } + + public void paint(Graphics g, JComponent c) { + AntialiasingManager.activateAntialiasing(g); + super.paint(g, c); + } +} diff --git a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommLookAndFeel.java b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommLookAndFeel.java index 7e8597d59..fa6f731cd 100644 --- a/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommLookAndFeel.java +++ b/src/net/java/sip/communicator/impl/gui/lookandfeel/SIPCommLookAndFeel.java @@ -60,6 +60,7 @@ protected void initClassDefaults(UIDefaults table) { "LabelUI", lfPackageName + "SIPCommLabelUI", "EditorPaneUI", lfPackageName + "SIPCommEditorPaneUI", "MenuItemUI", lfPackageName + "SIPCommMenuItemUI", + "CheckBoxMenuItemUI", lfPackageName + "SIPCommCheckBoxMenuItemUI", "MenuUI", lfPackageName + "SIPCommMenuUI", "ToolBarSeparatorUI", lfPackageName + "SIPCommToolBarSeparatorUI", "TabbedPaneUI", lfPackageName + "SIPCommTabbedPaneUI", diff --git a/src/net/java/sip/communicator/impl/gui/main/i18n/messages.properties b/src/net/java/sip/communicator/impl/gui/main/i18n/messages.properties index 558f1570c..971062ddf 100644 --- a/src/net/java/sip/communicator/impl/gui/main/i18n/messages.properties +++ b/src/net/java/sip/communicator/impl/gui/main/i18n/messages.properties @@ -80,6 +80,7 @@ statusChangeGeneralError=The status could not be changed due to a general applic statusChangeNetworkFailure=The status could not be changed due to a network \n failure. Please check yout network connection. today=Today tools=Tools +typingNotifications=Typing notifications uin=UIN: unknown=Unknown user unregisteredMessage=You have been disconnected from the ? server. Please check your network connection. diff --git a/src/net/java/sip/communicator/impl/gui/main/message/ChatPanel.java b/src/net/java/sip/communicator/impl/gui/main/message/ChatPanel.java index cfe81203b..c4141f05d 100644 --- a/src/net/java/sip/communicator/impl/gui/main/message/ChatPanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/message/ChatPanel.java @@ -82,6 +82,8 @@ public class ChatPanel extends JPanel { private OperationSetTypingNotifications tnOperationSet; private Contact protocolContact; + + private boolean enableTypingNotification = true; /** * Creates a chat panel which is added to the given chat window. @@ -525,4 +527,12 @@ public void openProtocolSelectorBox() { popup.setVisible(true); } } + + public void enableTypingNotification(boolean enable) { + this.enableTypingNotification = enable; + } + + public boolean isTypingNotificationEnabled(){ + return enableTypingNotification; + } } diff --git a/src/net/java/sip/communicator/impl/gui/main/message/ChatWritePanel.java b/src/net/java/sip/communicator/impl/gui/main/message/ChatWritePanel.java index 79ec87a6f..1cbb4881b 100755 --- a/src/net/java/sip/communicator/impl/gui/main/message/ChatWritePanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/message/ChatWritePanel.java @@ -56,6 +56,7 @@ public class ChatWritePanel extends JScrollPane implements private int typingState = -1; private StyledEditorKit styledEditor = new StyledEditorKit(); + /** * Creates an instance of ChatWritePanel. * @param chatPanel The parent ChatPanel. @@ -158,7 +159,7 @@ else if ((e.getModifiers() & KeyEvent.CTRL_MASK) == KeyEvent.CTRL_MASK redo(); } } - else { + else if (chatPanel.isTypingNotificationEnabled()){ if (typingState != OperationSetTypingNotifications.STATE_TYPING) { stoppedTypingTimer.setDelay(2 * 1000); typingState = OperationSetTypingNotifications.STATE_TYPING; diff --git a/src/net/java/sip/communicator/impl/gui/main/message/menu/FileMenu.java b/src/net/java/sip/communicator/impl/gui/main/message/menu/FileMenu.java index bd5f736ff..85efa6de4 100644 --- a/src/net/java/sip/communicator/impl/gui/main/message/menu/FileMenu.java +++ b/src/net/java/sip/communicator/impl/gui/main/message/menu/FileMenu.java @@ -20,6 +20,7 @@ import net.java.sip.communicator.impl.gui.utils.ImageLoader; /** * The FileMenu contains save, print and close. + * * @author Yana Stamcheva */ public class FileMenu extends JMenu diff --git a/src/net/java/sip/communicator/impl/gui/main/message/menu/MessageWindowMenuBar.java b/src/net/java/sip/communicator/impl/gui/main/message/menu/MessageWindowMenuBar.java index 783ed3994..374fcf151 100644 --- a/src/net/java/sip/communicator/impl/gui/main/message/menu/MessageWindowMenuBar.java +++ b/src/net/java/sip/communicator/impl/gui/main/message/menu/MessageWindowMenuBar.java @@ -23,7 +23,7 @@ public class MessageWindowMenuBar extends JMenuBar { private EditMenu editMenu; - private JMenu settingsMenu = new JMenu(Messages.getString("settings")); + private SettingsMenu settingsMenu; private JMenu helpMenu = new JMenu(Messages.getString("help")); @@ -41,6 +41,8 @@ public MessageWindowMenuBar(ChatWindow parentWindow) { editMenu = new EditMenu(this.parentWindow); + settingsMenu = new SettingsMenu(this.parentWindow); + this.init(); } @@ -58,7 +60,6 @@ private void init() { this.add(helpMenu); // Disable all menus that are not yet implemented. - this.settingsMenu.setEnabled(false); this.helpMenu.setEnabled(false); } } diff --git a/src/net/java/sip/communicator/impl/gui/main/message/menu/SettingsMenu.java b/src/net/java/sip/communicator/impl/gui/main/message/menu/SettingsMenu.java new file mode 100644 index 000000000..0bfb5b3bb --- /dev/null +++ b/src/net/java/sip/communicator/impl/gui/main/message/menu/SettingsMenu.java @@ -0,0 +1,44 @@ +package net.java.sip.communicator.impl.gui.main.message.menu; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JMenu; + +import net.java.sip.communicator.impl.gui.main.i18n.Messages; +import net.java.sip.communicator.impl.gui.main.message.ChatWindow; + +public class SettingsMenu extends JMenu + implements ActionListener { + + private JCheckBoxMenuItem typingNotificationsItem + = new JCheckBoxMenuItem(Messages.getString("typingNotifications"), true); + + private ChatWindow chatWindow; + + public SettingsMenu(ChatWindow chatWindow){ + super(Messages.getString("settings")); + + this.chatWindow = chatWindow; + + this.init(); + } + + private void init(){ + this.add(typingNotificationsItem); + + this.typingNotificationsItem.addActionListener(this); + } + + public void actionPerformed(ActionEvent e) { + JCheckBoxMenuItem item = (JCheckBoxMenuItem)e.getSource(); + + if (item.isSelected()) { + chatWindow.getCurrentChatPanel().enableTypingNotification(true); + } + else { + chatWindow.getCurrentChatPanel().enableTypingNotification(false); + } + } +}