/*
* (c) 2005-2009 Carlos G�mez Rodr�guez, todos los derechos reservados / all rights reserved.
* Licencia en license/bsd.txt / License in license/bsd.txt
*/
package org.f2o.absurdum.puck.util.swing;
import java.awt.KeyboardFocusManager;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.text.DefaultEditorKit;
/*
Created 20/04/2008 18:37:27
*/
public class EnhancedJTextArea extends JTextArea
{
private static JPopupMenu popupMenu;
static
{
/**
* Create an Edit menu to support cut/copy/paste.
*/
popupMenu = new JPopupMenu("Edit");
JMenuItem menuItem = new JMenuItem(new DefaultEditorKit.CutAction());
menuItem.setText("Cut");
menuItem.setMnemonic(KeyEvent.VK_T);
popupMenu.add(menuItem);
menuItem = new JMenuItem(new DefaultEditorKit.CopyAction());
menuItem.setText("Copy");
menuItem.setMnemonic(KeyEvent.VK_C);
popupMenu.add(menuItem);
menuItem = new JMenuItem(new DefaultEditorKit.PasteAction());
menuItem.setText("Paste");
menuItem.setMnemonic(KeyEvent.VK_P);
popupMenu.add(menuItem);
}
public EnhancedJTextArea()
{
super();
init();
}
public EnhancedJTextArea ( int rows , int cols )
{
super(rows,cols);
init();
}
public EnhancedJTextArea ( int rows , int cols , String content )
{
super(content,rows,cols);
init();
}
public void init()
{
//make tab cycle focus, instead of adding a tab character to the description
this.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, null);
this.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, null);
//listener for popup menu
this.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
processMouseEvent(e);
}
public void mouseReleased(MouseEvent e)
{
processMouseEvent(e);
}
private void processMouseEvent(MouseEvent e)
{
if (e.isPopupTrigger())
{
popupMenu.show(e.getComponent(), e.getX(), e.getY());
popupMenu.setInvoker(EnhancedJTextArea.this);
}
}
});
}
}