/*
* 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.event.*;
import java.util.*;
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>WritePanelRightButtonMenu</tt> appears when the user makes a right
* button click on the chat window write area (where user types messages).
*
* @author Yana Stamcheva
* @author Adam Netocny
*/
public class WritePanelRightButtonMenu
extends SIPCommPopupMenu
implements ActionListener,
Skinnable
{
private ChatContainer chatContainer;
private JMenuItem cutMenuItem = new JMenuItem(
GuiActivator.getResources().getI18NString("service.gui.CUT"),
new ImageIcon(ImageLoader.getImage(ImageLoader.CUT_ICON)));
private JMenuItem copyMenuItem = new JMenuItem(
GuiActivator.getResources().getI18NString("service.gui.COPY"),
new ImageIcon(ImageLoader.getImage(ImageLoader.COPY_ICON)));
private JMenuItem pasteMenuItem = new JMenuItem(
GuiActivator.getResources().getI18NString("service.gui.PASTE"),
new ImageIcon(ImageLoader.getImage(ImageLoader.PASTE_ICON)));
private JMenuItem closeMenuItem = new JMenuItem(
GuiActivator.getResources().getI18NString("service.gui.CLOSE"),
new ImageIcon(ImageLoader.getImage(ImageLoader.CLOSE_ICON)));
/**
* Creates an instance of <tt>WritePanelRightButtonMenu</tt>.
*
* @param chatContainer The window owner of this popup menu.
*/
public WritePanelRightButtonMenu(ChatContainer chatContainer)
{
super();
this.chatContainer = chatContainer;
this.init();
}
/**
* Initializes this menu with menu items.
*/
private void init()
{
this.add(copyMenuItem);
this.add(cutMenuItem);
this.add(pasteMenuItem);
this.addSeparator();
this.add(closeMenuItem);
this.copyMenuItem.setName("copy");
this.cutMenuItem.setName("cut");
this.pasteMenuItem.setName("paste");
this.closeMenuItem.setName("service.gui.CLOSE");
this.copyMenuItem.addActionListener(this);
this.cutMenuItem.addActionListener(this);
this.pasteMenuItem.addActionListener(this);
this.closeMenuItem.addActionListener(this);
this.copyMenuItem.setMnemonic(
GuiActivator.getResources().getI18nMnemonic("service.gui.COPY"));
this.cutMenuItem.setMnemonic(
GuiActivator.getResources().getI18nMnemonic("service.gui.CUT"));
this.pasteMenuItem.setMnemonic(
GuiActivator.getResources().getI18nMnemonic("service.gui.PASTE"));
this.closeMenuItem.setMnemonic(
GuiActivator.getResources().getI18nMnemonic("service.gui.CLOSE"));
this.cutMenuItem.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_X,
KeyEvent.CTRL_MASK));
this.copyMenuItem.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_C,
KeyEvent.CTRL_MASK));
this.pasteMenuItem.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_P,
KeyEvent.CTRL_MASK));
}
/**
* 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("cut"))
{
this.chatContainer.getCurrentChat().cut();
}
else if (itemText.equalsIgnoreCase("copy"))
{
this.chatContainer.getCurrentChat().copyWriteArea();
}
else if (itemText.equalsIgnoreCase("paste"))
{
this.chatContainer.getCurrentChat().paste();
}
else if (itemText.equalsIgnoreCase("service.gui.CLOSE"))
{
this.chatContainer.getFrame().setVisible(false);
this.chatContainer.getFrame().dispose();
}
}
/**
* Reloads menu icons.
*/
public void loadSkin()
{
cutMenuItem.setIcon(new ImageIcon(
ImageLoader.getImage(ImageLoader.CUT_ICON)));
copyMenuItem.setIcon(new ImageIcon(
ImageLoader.getImage(ImageLoader.COPY_ICON)));
pasteMenuItem.setIcon(new ImageIcon(
ImageLoader.getImage(ImageLoader.PASTE_ICON)));
closeMenuItem.setIcon(new ImageIcon(
ImageLoader.getImage(ImageLoader.CLOSE_ICON)));
}
/**
* Provides a popup menu with custom entries followed by default
* operation entries ( copy, paste ,close)
*
* @param entries custom menu entries to be added
* @return right click menu
*/
public JPopupMenu makeMenu(List <JMenuItem> entries) {
JPopupMenu rightMenu = new JPopupMenu();
for(JMenuItem entry : entries) {
rightMenu.add(entry);
}
if(!entries.isEmpty()) rightMenu.addSeparator();
rightMenu.add(copyMenuItem);
rightMenu.add(cutMenuItem);
rightMenu.add(pasteMenuItem);
rightMenu.addSeparator();
rightMenu.add(closeMenuItem);
return rightMenu;
}
/**
* Clear resources.
*/
public void dispose()
{
chatContainer = null;
cutMenuItem = null;
copyMenuItem = null;
pasteMenuItem = null;
closeMenuItem = null;
}
}