📄 textutilitiespopupmenu.java
字号:
/* * TextUtilitiesPopUpMenu.java * * Copyright (C) 2002, 2003, 2004, 2005, 2006 Takis Diakoumis * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */package org.executequery.gui.text;import java.awt.event.ActionEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.Action;import javax.swing.JMenuItem;import javax.swing.JPopupMenu;import javax.swing.KeyStroke;import javax.swing.text.JTextComponent;import org.underworldlabs.swing.actions.ActionBuilder;import org.underworldlabs.swing.actions.ReflectiveAction;/* ---------------------------------------------------------- * CVS NOTE: Changes to the CVS repository prior to the * release of version 3.0.0beta1 has meant a * resetting of CVS revision numbers. * ---------------------------------------------------------- *//** * The text utilities popup menu function * * @author Takis Diakoumis * @version $Revision: 1.4 $ * @date $Date: 2006/05/14 06:56:52 $ */public class TextUtilitiesPopUpMenu extends JPopupMenu { /** the action listener */ private ReflectiveAction reflectiveAction; /** the text component this popup belongs to */ private JTextComponent textComponent; public TextUtilitiesPopUpMenu() { // create the listener reflectiveAction = new ReflectiveAction(this); // the menu label text String[] menuLabels = {"Cut", "Copy", "Paste"}; // cached actions from which to retrieve common accels and mnemonics String[] actionNames = {"cut-command", "copy-command", "paste-command"}; // action command settings to map to method names in this class String[] actionCommands = {"cut", "copy", "paste"}; for (int i = 0; i < menuLabels.length; i++) { add(createMenuItem(menuLabels[i], actionNames[i], actionCommands[i])); } } /** * Executes the cut action on the registered text component. */ public void cut(ActionEvent e) { textComponent.cut(); } /** * Executes the copy action on the registered text component. */ public void copy(ActionEvent e) { textComponent.copy(); } /** * Executes the paste action on the registered text component. */ public void paste(ActionEvent e) { textComponent.paste(); } private JMenuItem createMenuItem(String text, String actionName, String actionCommand) { JMenuItem menuItem = new JMenuItem(text); Action action = ActionBuilder.get(actionName); Object object = action.getValue(Action.ACCELERATOR_KEY); if (object != null) { menuItem.setAccelerator((KeyStroke)object); } object = action.getValue(Action.MNEMONIC_KEY); if (object != null) { menuItem.setMnemonic(((Integer)object).intValue()); } menuItem.setActionCommand(actionCommand); menuItem.addActionListener(reflectiveAction); return menuItem; } public void registerTextComponent(JTextComponent textComponent) { this.textComponent = textComponent; textComponent.addMouseListener(new PopupListener(this)); } class PopupListener extends MouseAdapter { private JPopupMenu popup; public PopupListener(JPopupMenu popup) { this.popup = popup; } public void mousePressed(MouseEvent e) { maybeShowPopup(e); } public void mouseReleased(MouseEvent e) { maybeShowPopup(e); } private void maybeShowPopup(MouseEvent e) { if (e.isPopupTrigger()) { popup.show(e.getComponent(), e.getX(), e.getY()); } } } // class PopupListener }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -