/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sip.communicator.impl.gui.main.chat.menus; import java.awt.*; import java.awt.event.*; import javax.swing.*; import net.java.sip.communicator.impl.gui.*; import net.java.sip.communicator.impl.gui.main.chat.*; import net.java.sip.communicator.impl.gui.utils.*; import net.java.sip.communicator.plugin.desktoputil.*; import net.java.sip.communicator.util.skin.*; /** * The <tt>ChatRightButtonMenu</tt> appears when the user makes a right button * click on the chat window conversation area (where sent and received messages * are displayed). * * @author Yana Stamcheva * @author Adam Netocny */ public class ChatRightButtonMenu extends SIPCommPopupMenu implements ActionListener, Skinnable { private ChatConversationPanel chatConvPanel; private JMenuItem copyMenuItem = new JMenuItem( GuiActivator.getResources().getI18NString("service.gui.COPY"), new ImageIcon(ImageLoader.getImage(ImageLoader.COPY_ICON))); private JMenuItem closeMenuItem = new JMenuItem( GuiActivator.getResources().getI18NString("service.gui.CLOSE"), new ImageIcon(ImageLoader.getImage(ImageLoader.CLOSE_ICON))); /** * Creates an instance of <tt>ChatRightButtonMenu</tt>. * * @param chatConvPanel The conversation panel, where this menu will apear. */ public ChatRightButtonMenu(ChatConversationPanel chatConvPanel) { super(); this.chatConvPanel = chatConvPanel; this.init(); } /** * Initializes the menu with all menu items. */ private void init() { this.add(copyMenuItem); this.addSeparator(); this.add(closeMenuItem); this.copyMenuItem.setName("copy"); this.closeMenuItem.setName("service.gui.CLOSE"); this.copyMenuItem.addActionListener(this); this.closeMenuItem.addActionListener(this); this.copyMenuItem.setMnemonic( GuiActivator.getResources().getI18nMnemonic("service.gui.COPY")); this.closeMenuItem.setMnemonic( GuiActivator.getResources().getI18nMnemonic("service.gui.CLOSE")); this.copyMenuItem.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK)); } /** * Disables the copy item. */ public void disableCopy() { this.copyMenuItem.setEnabled(false); } /** * Enables the copy item. */ public void enableCopy() { this.copyMenuItem.setEnabled(true); } /** * Handles the <tt>ActionEvent</tt> when one of the menu items is selected. * * @param e the <tt>ActionEvent</tt> that notified us */ public void actionPerformed(ActionEvent e) { JMenuItem menuItem = (JMenuItem) e.getSource(); String itemText = menuItem.getName(); if (itemText.equalsIgnoreCase("copy")) { this.chatConvPanel.copyConversation(); } else if (itemText.equalsIgnoreCase("save")) { //TODO: Implement save to file. } else if (itemText.equalsIgnoreCase("print")) { //TODO: Implement print. } else if (itemText.equalsIgnoreCase("service.gui.CLOSE")) { Window window = this.chatConvPanel .getChatContainer().getConversationContainerWindow(); window.setVisible(false); window.dispose(); } } /** * Reloads menu icons. */ public void loadSkin() { copyMenuItem.setIcon(new ImageIcon( ImageLoader.getImage(ImageLoader.COPY_ICON))); closeMenuItem.setIcon(new ImageIcon( ImageLoader.getImage(ImageLoader.CLOSE_ICON))); } /** * Clear resources. */ public void dispose() { this.chatConvPanel = null; copyMenuItem = null; closeMenuItem = null; } }