?? menumanager.java
字號:
/* * Copyright (c) 2001 Sun Microsystems, Inc. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Sun Microsystems, Inc. for Project JXTA." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA" * must not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact Project JXTA at http://www.jxta.org. * * 5. Products derived from this software may not be called "JXTA", * nor may "JXTA" appear in their name, without prior written * permission of Sun. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of Project JXTA. For more * information on Project JXTA, please see * <http://www.jxta.org/>. * * This license is based on the BSD license adopted by the Apache Foundation. * * $Id: MenuManager.java,v 1.27 2006/07/15 23:13:58 nano Exp $ */package net.jxta.myjxta.ui;import net.jxta.myjxta.View;import net.jxta.myjxta.plugin.Plugin;import net.jxta.myjxta.plugin.PluginAction;import net.jxta.myjxta.plugin.PluginContainer;import net.jxta.myjxta.ui.action.*;import net.jxta.myjxta.util.Resources;import javax.swing.*;import javax.swing.event.MenuEvent;import javax.swing.event.MenuListener;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.KeyEvent;import java.util.HashMap;import java.util.Iterator;import java.util.ResourceBundle;import java.util.Set;/** * @author james todd [gonzo at jxta dot org] * @version $Id: MenuManager.java,v 1.27 2006/07/15 23:13:58 nano Exp $ */public final class MenuManager { public static final String PLUGIN_MENU_CHAT_ONE_TO_ONE_SECURE = "MenuManager.chat.oneToOne.secure"; private static final ResourceBundle STRINGS = Resources.getStrings(); private View view = null; private final HashMap<JMenuItem, Action> g_actions = new HashMap<JMenuItem, Action>(); private final HashMap<String,Action> g_pluginActions = new HashMap<String,Action>(); private static MenuManager g_theInstance = null; /** * Singleton - only one Main-Menu Menumanager is possible * * @param p_view * @return the one and only instance */ public static MenuManager getInstance(View p_view) { if (g_theInstance == null) { g_theInstance = new MenuManager(p_view); } return g_theInstance; } abstract class AbstractMenuListener implements MenuListener { JMenu m = null; AbstractMenuListener(JMenu m) { this.m = m; } public void menuCanceled(MenuEvent me) { } public void menuDeselected(MenuEvent me) { } } private MenuManager(View view) { this.view = view; } public JMenuBar getMenuBar() { JMenuBar mb = new JMenuBar(); mb.add(buildFileMenu()); mb.add(getActionMenu()); mb.add(buildPluginsMenu()); mb.add(Box.createHorizontalGlue()); mb.add(buildHelpMenu()); return mb; } public JMenu getActionMenu() { return buildActionMenu(); } private JMenu buildFileMenu() { JMenu m = new JMenu(STRINGS.getString("menu.file")); m.setMnemonic(KeyEvent.VK_F); m.add(buildPreferencesMenu()); m.add(buildExitMenu()); return m; } private JMenuItem buildImportMenu() { String l = STRINGS.getString("menu.import"); return buildMenuItem(l, KeyEvent.VK_I, STRINGS.getString("tip.import"), new ImportAction(l, this.view)); } private JMenuItem buildExportMenu() { String l = STRINGS.getString("menu.export"); return buildMenuItem(l, KeyEvent.VK_E, STRINGS.getString("tip.export"), new ExportAction(l, this.view)); } private JMenuItem buildPreferencesMenu() { String l = STRINGS.getString("menu.preferences"); JMenuItem item; item = buildMenuItem(l, KeyEvent.VK_P, STRINGS.getString("tip.preferences"), new PreferencesAction(l, this.view)); item.setEnabled(true); return item; } private JMenuItem buildExitMenu() { String l = STRINGS.getString("menu.exit"); AbstractAction exitAction = new ExitAction(l, this.view.getControl()); return buildMenuItem(l, KeyEvent.VK_E, STRINGS.getString("tip.exit"), exitAction); } private JMenu buildActionMenu() { JMenu m = new JMenu(STRINGS.getString("menu.action")); m.setMnemonic(KeyEvent.VK_A); m.add(buildPeersMenu()); m.add(buildGroupsMenu()); m.add(buildShareMenu()); m.add(buildImportMenu()); m.add(buildExportMenu()); m.addMenuListener(new AbstractMenuListener(m) { public void menuSelected(MenuEvent me) { view.setActionMenuContext(); } }); return m; }// private JMenuItem buildPeerVoipMenu() {// String l = STRINGS.getString("menu.peer.voice");//// return buildMenuItem(l, KeyEvent.VK_I,// new VoJxtaInviteAction(l, (MyJXTAView)this.view));// } /** * @modified 2005-04-14 jamoore add video to peers menu */ private JMenu buildPeersMenu() { JMenu m = new JMenu(STRINGS.getString("menu.peer")); m.setMnemonic(KeyEvent.VK_P); m.add(buildPeerSearchMenu()); m.add(buildPeerChatMenu());// m.add(buildPeerVoipMenu()); m.add(buildPeerStatusMenu()); m.add(buildPeerProfileMenu()); m.add(buildPeerAddMenu()); m.add(buildPeerRemoveMenu());// m.add(buildPeerTicTacToeMenu()); return m; } private JMenuItem buildPeerSearchMenu() { String l = STRINGS.getString("menu.peer.find"); return buildMenuItem(l, KeyEvent.VK_S, new PeerSearchAction(l, this.view)); } private class PluginActionProxy extends AbstractAction{ private final String m_id; PluginActionProxy(String name,String id){ super(name); m_id=id; } public boolean isEnabled(){ if (g_pluginActions.get(m_id)==null) return false; else return g_pluginActions.get(m_id).isEnabled(); } public void actionPerformed(ActionEvent p_e) { if (isEnabled()) g_pluginActions.get(m_id).actionPerformed(p_e); } } private JMenuItem buildPeerChatMenu() { String l = STRINGS.getString("menu.peer.dialog"); return buildMenuItem(l, KeyEvent.VK_C, ActionEvent.CTRL_MASK, STRINGS.getString("tip.peer.dialog"), new PluginActionProxy(l,PLUGIN_MENU_CHAT_ONE_TO_ONE_SECURE)); } private JMenuItem buildPeerStatusMenu() { String l = STRINGS.getString("menu.peer.status");
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -