diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/menus/FileMenu.java b/src/net/java/sip/communicator/impl/gui/main/chat/menus/ChatFileMenu.java similarity index 70% rename from src/net/java/sip/communicator/impl/gui/main/chat/menus/FileMenu.java rename to src/net/java/sip/communicator/impl/gui/main/chat/menus/ChatFileMenu.java index 4011b3501..9d225783d 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/menus/FileMenu.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/menus/ChatFileMenu.java @@ -15,8 +15,6 @@ import net.java.sip.communicator.impl.gui.main.chat.history.*; import net.java.sip.communicator.impl.gui.main.chatroomslist.*; import net.java.sip.communicator.impl.gui.utils.*; -import net.java.sip.communicator.plugin.desktoputil.*; -import net.java.sip.communicator.util.*; import net.java.sip.communicator.util.skin.*; /** @@ -26,15 +24,11 @@ * @author Yana Stamcheva * @author Adam Netocny */ -public class FileMenu - extends SIPCommMenu +public class ChatFileMenu + extends net.java.sip.communicator.impl.gui.main.menus.FileMenu implements ActionListener, Skinnable { - private JMenuItem myChatRoomsItem = new JMenuItem( - GuiActivator.getResources().getI18NString("service.gui.MY_CHAT_ROOMS"), - new ImageIcon(ImageLoader.getImage(ImageLoader.CHAT_ROOM_16x16_ICON))); - private JMenuItem historyItem = new JMenuItem( GuiActivator.getResources().getI18NString("service.gui.HISTORY"), new ImageIcon(ImageLoader.getImage(ImageLoader.HISTORY_16x16_ICON))); @@ -43,42 +37,34 @@ public class FileMenu GuiActivator.getResources().getI18NString("service.gui.CLOSE"), new ImageIcon(ImageLoader.getImage(ImageLoader.CLOSE_ICON))); - private ChatWindow parentWindow; + private ChatWindow chatWindow; /** * Creates an instance of FileMenu. - * @param parentWindow The parent ChatWindow. + * + * @param chatWindow The parent ChatWindow. */ - public FileMenu(ChatWindow parentWindow) + public ChatFileMenu(ChatWindow chatWindow) { - super(GuiActivator.getResources().getI18NString("service.gui.FILE")); + super(chatWindow, true); - this.parentWindow = parentWindow; + this.chatWindow = chatWindow; this.setMnemonic( GuiActivator.getResources().getI18nMnemonic("service.gui.FILE")); - if (!ConfigurationUtils.isGoToChatroomDisabled()) - { - this.add(myChatRoomsItem); - } this.add(historyItem); this.addSeparator(); this.add(closeMenuItem); - this.myChatRoomsItem.setName("myChatRooms"); this.historyItem.setName("history"); this.closeMenuItem.setName("close"); - this.myChatRoomsItem.addActionListener(this); this.historyItem.addActionListener(this); this.closeMenuItem.addActionListener(this); - this.myChatRoomsItem.setMnemonic( - GuiActivator.getResources() - .getI18nMnemonic("service.gui.MY_CHAT_ROOMS")); this.historyItem.setMnemonic( GuiActivator.getResources().getI18nMnemonic("service.gui.HISTORY")); this.closeMenuItem.setMnemonic( @@ -92,6 +78,8 @@ public FileMenu(ChatWindow parentWindow) */ public void actionPerformed(ActionEvent e) { + super.actionPerformed(e); + JMenuItem menuItem = (JMenuItem) e.getSource(); String itemText = menuItem.getName(); @@ -106,7 +94,7 @@ else if (itemText.equals("history")) HistoryWindowManager historyWindowManager = GuiActivator.getUIService().getHistoryWindowManager(); - ChatPanel chatPanel = this.parentWindow.getCurrentChat(); + ChatPanel chatPanel = this.chatWindow.getCurrentChat(); ChatSession chatSession = chatPanel.getChatSession(); if(historyWindowManager @@ -133,8 +121,8 @@ else if (itemText.equals("history")) } else if (itemText.equalsIgnoreCase("close")) { - this.parentWindow.setVisible(false); - this.parentWindow.dispose(); + this.chatWindow.setVisible(false); + this.chatWindow.dispose(); } } @@ -143,13 +131,14 @@ else if (itemText.equalsIgnoreCase("close")) */ public void loadSkin() { - myChatRoomsItem.setIcon(new ImageIcon( - ImageLoader.getImage(ImageLoader.CHAT_ROOM_16x16_ICON))); + super.loadSkin(); - historyItem.setIcon(new ImageIcon( - ImageLoader.getImage(ImageLoader.HISTORY_ICON))); + if (historyItem != null) + historyItem.setIcon(new ImageIcon( + ImageLoader.getImage(ImageLoader.HISTORY_ICON))); - closeMenuItem.setIcon(new ImageIcon( - ImageLoader.getImage(ImageLoader.CLOSE_ICON))); + if (closeMenuItem != null) + closeMenuItem.setIcon(new ImageIcon( + ImageLoader.getImage(ImageLoader.CLOSE_ICON))); } } diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/menus/OptionsMenu.java b/src/net/java/sip/communicator/impl/gui/main/chat/menus/ChatToolsMenu.java similarity index 92% rename from src/net/java/sip/communicator/impl/gui/main/chat/menus/OptionsMenu.java rename to src/net/java/sip/communicator/impl/gui/main/chat/menus/ChatToolsMenu.java index a10cc4f58..856fdb3b5 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/menus/OptionsMenu.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/menus/ChatToolsMenu.java @@ -14,7 +14,7 @@ import net.java.sip.communicator.impl.gui.*; import net.java.sip.communicator.impl.gui.main.chat.*; -import net.java.sip.communicator.plugin.desktoputil.*; +import net.java.sip.communicator.impl.gui.main.menus.*; import net.java.sip.communicator.util.*; /** * The OptionMenu is a menu in the chat window menu bar. @@ -22,8 +22,8 @@ * @author Damien Roth * @author Yana Stamcheva */ -public class OptionsMenu - extends SIPCommMenu +public class ChatToolsMenu + extends ToolsMenu implements ActionListener { private ChatWindow chatWindow = null; @@ -46,14 +46,18 @@ public class OptionsMenu * Creates an instance of HelpMenu. * @param chatWindow The parent MainFrame. */ - public OptionsMenu(ChatWindow chatWindow) + public ChatToolsMenu(ChatWindow chatWindow) { - super(GuiActivator.getResources().getI18NString("service.gui.TOOLS")); + super(true); + this.chatWindow = chatWindow; this.setMnemonic( GuiActivator.getResources().getI18nMnemonic("service.gui.TOOLS")); + // Add a separator before adding the specific chat items. + this.addSeparator(); + this.viewToolBar.setActionCommand(ACTCMD_VIEW_TOOLBAR); this.viewToolBar.addActionListener(this); this.add(viewToolBar); @@ -91,6 +95,8 @@ private void initValues() */ public void actionPerformed(ActionEvent e) { + super.actionPerformed(e); + String action = e.getActionCommand(); if (action.equals(ACTCMD_VIEW_TOOLBAR)) diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/menus/MessageWindowMenuBar.java b/src/net/java/sip/communicator/impl/gui/main/chat/menus/MessageWindowMenuBar.java index 33adcafcc..f06f8da71 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/menus/MessageWindowMenuBar.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/menus/MessageWindowMenuBar.java @@ -29,11 +29,11 @@ public class MessageWindowMenuBar extends SIPCommWindowMenuBar { - private final FileMenu fileMenu; + private final ChatFileMenu fileMenu; private final EditMenu editMenu; - private final OptionsMenu optionsMenu; + private final ChatToolsMenu optionsMenu; private final HelpMenu helpMenu; @@ -53,9 +53,9 @@ public MessageWindowMenuBar(ChatWindow parentWindow) { super("service.gui.CHAT_MENU_FOREGROUND"); - fileMenu = new FileMenu(parentWindow); + fileMenu = new ChatFileMenu(parentWindow); editMenu = new EditMenu(parentWindow); - optionsMenu = new OptionsMenu(parentWindow); + optionsMenu = new ChatToolsMenu(parentWindow); helpMenu = new HelpMenu(parentWindow); this.init(); diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java index 36cf00f4e..2fe14387d 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java @@ -24,6 +24,7 @@ import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.util.*; +import net.java.sip.communicator.util.account.*; import net.java.sip.communicator.util.skin.*; /** @@ -70,8 +71,6 @@ public class AddContactDialog private final JButton cancelButton = new JButton( GuiActivator.getResources().getI18NString("service.gui.CANCEL")); - private final MainFrame mainFrame; - private MetaContact metaContact; /** @@ -83,13 +82,11 @@ public class AddContactDialog * Creates an instance of AddContactDialog that represents a dialog * that adds a new contact to an already existing meta contact. * - * @param mainFrame The MainFrame parent window. + * @param parentWindow the parent window of this dialog */ - public AddContactDialog(MainFrame mainFrame) + public AddContactDialog(Frame parentWindow) { - super(mainFrame); - - this.mainFrame = mainFrame; + super(parentWindow); this.setTitle(GuiActivator.getResources() .getI18NString("service.gui.ADD_CONTACT")); @@ -105,7 +102,7 @@ public AddContactDialog(MainFrame mainFrame) * @param parentWindow the parent window * @param metaContact the meta contact, to which to add the new contact */ - public AddContactDialog(MainFrame parentWindow, MetaContact metaContact) + public AddContactDialog(Frame parentWindow, MetaContact metaContact) { this(parentWindow); @@ -268,7 +265,7 @@ private Container createButtonsPanel() private void initAccountCombo() { Iterator providers - = mainFrame.getProtocolProviders(); + = AccountUtils.getRegisteredProviders().iterator(); accountCombo.addItem(GuiActivator.getResources() .getI18NString("service.gui.SELECT_ACCOUNT")); diff --git a/src/net/java/sip/communicator/impl/gui/main/menus/FileMenu.java b/src/net/java/sip/communicator/impl/gui/main/menus/FileMenu.java index e3f6a3446..63f5b1253 100644 --- a/src/net/java/sip/communicator/impl/gui/main/menus/FileMenu.java +++ b/src/net/java/sip/communicator/impl/gui/main/menus/FileMenu.java @@ -6,13 +6,13 @@ */ package net.java.sip.communicator.impl.gui.main.menus; +import java.awt.*; import java.awt.event.*; import java.lang.reflect.*; import javax.swing.*; import net.java.sip.communicator.impl.gui.*; -import net.java.sip.communicator.impl.gui.main.*; import net.java.sip.communicator.impl.gui.main.account.*; import net.java.sip.communicator.impl.gui.main.chatroomslist.*; import net.java.sip.communicator.impl.gui.main.contactlist.*; @@ -44,7 +44,7 @@ public class FileMenu */ private static final Logger logger = Logger.getLogger(FileMenu.class); - private final MainFrame parentWindow; + private final Frame parentWindow; /** * Add new account menu item. @@ -71,14 +71,34 @@ public class FileMenu */ private JMenuItem closeMenuItem; + /** + * Indicates if this menu is shown for the chat window or the contact list + * window. + */ + private boolean isChatMenu; + + /** + * Creates an instance of FileMenu. + * @param parentWindow The parent ChatWindow. + */ + public FileMenu(Frame parentWindow) + { + this(parentWindow, false); + } + /** * Creates an instance of FileMenu. + * * @param parentWindow The parent ChatWindow. + * @param isChatMenu indicates if this menu would be shown for a chat + * window */ - public FileMenu(MainFrame parentWindow) + public FileMenu(Frame parentWindow, boolean isChatMenu) { super(GuiActivator.getResources().getI18NString("service.gui.FILE")); + this.isChatMenu = isChatMenu; + ResourceManagementService resources = GuiActivator.getResources(); createGroupItem = new JMenuItem( resources.getI18NString("service.gui.CREATE_GROUP")); @@ -114,7 +134,7 @@ public FileMenu(MainFrame parentWindow) } } - if (!ConfigurationUtils.isAddContactDisabled()) + if (!isChatMenu && !ConfigurationUtils.isAddContactDisabled()) { addContactItem = new JMenuItem( resources.getI18NString("service.gui.ADD_CONTACT") + "..."); @@ -140,7 +160,7 @@ public FileMenu(MainFrame parentWindow) endsWithSeparator = false; } - if (!ConfigurationUtils.isCreateGroupDisabled()) + if (!isChatMenu && !ConfigurationUtils.isCreateGroupDisabled()) { this.add(createGroupItem); @@ -334,11 +354,14 @@ private void registerCloseMenuItemNonMacOSX(boolean addSeparator) if(addSeparator) this.addSeparator(); - - this.add(closeMenuItem); - closeMenuItem.setName("close"); - closeMenuItem.addActionListener(this); - closeMenuItem.setMnemonic(GuiActivator.getResources() - .getI18nMnemonic("service.gui.QUIT")); + + if (!isChatMenu) + { + this.add(closeMenuItem); + closeMenuItem.setName("close"); + closeMenuItem.addActionListener(this); + closeMenuItem.setMnemonic(GuiActivator.getResources() + .getI18nMnemonic("service.gui.QUIT")); + } } } diff --git a/src/net/java/sip/communicator/impl/gui/main/menus/MainMenu.java b/src/net/java/sip/communicator/impl/gui/main/menus/MainMenu.java index 47b8e07c9..7cdbd639e 100755 --- a/src/net/java/sip/communicator/impl/gui/main/menus/MainMenu.java +++ b/src/net/java/sip/communicator/impl/gui/main/menus/MainMenu.java @@ -36,7 +36,7 @@ public MainMenu(MainFrame mainFrame) super("service.gui.MAIN_MENU_FOREGROUND"); addMenu(new FileMenu(mainFrame), "service.gui.FILE"); - addMenu(new ToolsMenu(mainFrame), "service.gui.TOOLS"); + addMenu(new ToolsMenu(), "service.gui.TOOLS"); addMenu(new HelpMenu(mainFrame), "service.gui.HELP"); } diff --git a/src/net/java/sip/communicator/impl/gui/main/menus/ToolsMenu.java b/src/net/java/sip/communicator/impl/gui/main/menus/ToolsMenu.java index a6b08b915..f84a06357 100644 --- a/src/net/java/sip/communicator/impl/gui/main/menus/ToolsMenu.java +++ b/src/net/java/sip/communicator/impl/gui/main/menus/ToolsMenu.java @@ -16,7 +16,6 @@ import net.java.sip.communicator.impl.gui.*; import net.java.sip.communicator.impl.gui.event.*; -import net.java.sip.communicator.impl.gui.main.*; import net.java.sip.communicator.impl.gui.main.call.*; import net.java.sip.communicator.impl.gui.main.call.conference.*; import net.java.sip.communicator.impl.gui.main.configforms.*; @@ -108,12 +107,31 @@ public class ToolsMenu */ private MenuListener videoBridgeMenuListener; + /** + * Indicates if this menu is shown for the chat window or the contact list + * window. + */ + private boolean isChatMenu; + /** * Creates an instance of FileMenu. - * @param parentWindow The parent ChatWindow. */ - public ToolsMenu(MainFrame parentWindow) + public ToolsMenu() + { + this(false); + } + + /** + * Creates an instance of FileMenu, by specifying if this menu + * would be shown for a chat window. + * + * @param isChatMenu indicates if this menu would be shown for a chat + * window + */ + public ToolsMenu(boolean isChatMenu) { + this.isChatMenu = isChatMenu; + ResourceManagementService r = GuiActivator.getResources(); setText(r.getI18NString("service.gui.TOOLS")); @@ -373,11 +391,15 @@ private void registerMenuItems() ? "service.gui.HIDE_OFFLINE_CONTACTS" : "service.gui.SHOW_OFFLINE_CONTACTS"; - hideOfflineMenuItem = new JMenuItem(r.getI18NString(offlineTextKey)); - hideOfflineMenuItem.setMnemonic(r.getI18nMnemonic(offlineTextKey)); - hideOfflineMenuItem.setName("showHideOffline"); - hideOfflineMenuItem.addActionListener(this); - this.add(hideOfflineMenuItem); + // The hide offline menu item only makes sense in the contact list. + if (!isChatMenu) + { + hideOfflineMenuItem = new JMenuItem(r.getI18NString(offlineTextKey)); + hideOfflineMenuItem.setMnemonic(r.getI18nMnemonic(offlineTextKey)); + hideOfflineMenuItem.setName("showHideOffline"); + hideOfflineMenuItem.addActionListener(this); + this.add(hideOfflineMenuItem); + } // Sound on/off menu item. String soundTextKey @@ -675,8 +697,13 @@ public void loadSkin() configMenuItem.setIcon( r.getImage("service.gui.icons.CONFIGURE_ICON")); } - hideOfflineMenuItem.setIcon( - r.getImage("service.gui.icons.SHOW_HIDE_OFFLINE_ICON")); + + // The hide offline menu item could be null if the parent window of this + // menu is a chat window. + if (hideOfflineMenuItem != null) + hideOfflineMenuItem.setIcon( + r.getImage("service.gui.icons.SHOW_HIDE_OFFLINE_ICON")); + soundMenuItem.setIcon( r.getImage("service.gui.icons.SOUND_MENU_ICON")); if (videoBridgeMenuItem != null)