⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jchempaintmenubar.java

📁 化学图形处理软件
💻 JAVA
字号:
/* *  $RCSfile$ *  $Author: egonw $ *  $Date: 2007-01-04 18:26:00 +0100 (Thu, 04 Jan 2007) $ *  $Revision: 7634 $ * *  Copyright (C) 1997-2007  The JChemPaint project * *  Contact: jchempaint-devel@lists.sourceforge.net * *  This program is free software; you can redistribute it and/or *  modify it under the terms of the GNU Lesser General Public License *  as published by the Free Software Foundation; either version 2.1 *  of the License, or (at your option) any later version. *  All we ask is that proper credit is given for our work, which includes *  - but is not limited to - adding the above copyright notice to the beginning *  of your source code files, and to any copyright notice that you may distribute *  with programs based on this work. * *  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 Lesser General Public License for more details. * *  You should have received a copy of the GNU Lesser General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */package org.openscience.cdk.applications.jchempaint;import java.lang.reflect.Field;import java.util.MissingResourceException;import java.util.Properties;import java.util.StringTokenizer;import javax.swing.Box;import javax.swing.JCheckBoxMenuItem;import javax.swing.JComponent;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.KeyStroke;import org.openscience.cdk.applications.jchempaint.action.JCPAction;import org.openscience.cdk.tools.LoggingTool;/** *  JChemPaint menu bar * * @author        steinbeck * @cdk.module    jchempaint */public class JChemPaintMenuBar extends JMenuBar {	private static final long serialVersionUID = -8358165408129203644L;	private LoggingTool logger;    private String guiString = "stable";	/**	 *  The default constructor method.	 *	 * @param  jcpPanel  Description of the Parameter	 */	public JChemPaintMenuBar(JChemPaintPanel jcpPanel) {		this(jcpPanel, "stable");	}		/**	 *  The more flexible constructor method.	 *	 * @param  jcpPanel       Description of the Parameter	 * @param  guiString      Description of the Parameter	 */	public JChemPaintMenuBar(JChemPaintPanel jcpPanel, String guiString) {		this(jcpPanel, null, guiString);	}	/**	 *  Constructor for the JChemPaintMenuBar object	 *	 * @param  jcpPanel        Description of the Parameter	 * @param  guiString       Description of the Parameter	 * @param  menuDefinition  Description of the Parameter	 */	public JChemPaintMenuBar(JChemPaintPanel jcpPanel, String menuDefinition, String guiString) {		logger = new LoggingTool(this);		this.guiString = guiString;    	createMenubar(jcpPanel, menuDefinition);	}	/**	 *  Creates a JMenuBar with all the menues that are specified in the properties	 *  file. <p>	 *	 *  The menu items in the bar are defined by the property 'menubar' in	 *  org.openscience.cdk.applications.jchempaint.resources.JChemPaint.properties.	 *	 * @param  jcpPanel        Description of the Parameter	 * @param  menuDefinition  Description of the Parameter	 */	protected void createMenubar(JChemPaintPanel jcpPanel,         String menuDefinition) {		addNormalMenuBar(jcpPanel, menuDefinition);		this.add(Box.createHorizontalGlue());		this.add(createMenu(jcpPanel, "help"));	}	/**	 *  Adds a feature to the NormalMenuBar attribute of the JChemPaintMenuBar	 *  object	 *	 * @param  jcpPanel        The feature to be added to the NormalMenuBar	 *      attribute	 * @param  menuDefinition  The feature to be added to the NormalMenuBar	 *      attribute	 */	private void addNormalMenuBar(JChemPaintPanel jcpPanel, String menuDefinition) {		String definition = menuDefinition;		if (definition == null) {			definition = getMenuResourceString("menubar");		}		String[] menuKeys = StringHelper.tokenize(definition);		for (int i = 0; i < menuKeys.length; i++) {			JMenu m = createMenu(jcpPanel, menuKeys[i]);			if (m != null) {				this.add(m);			}		}	}	/**	 *  Creates a JMenu which can be part of the menu of an application embedding jcp.	 *	 * @param  jcpPanel   Description of the Parameter	 * @return            The created JMenu	 */	public JMenu getMenuForEmbedded(JChemPaintPanel jcpPanel) {		String definition = getMenuResourceString("menubar");		String[] menuKeys = StringHelper.tokenize(definition);		JMenu superMenu = new JMenu("JChemPaint");		for (int i = 0; i < menuKeys.length; i++) {			JMenu m = createMenu(jcpPanel, menuKeys[i]);			if (m != null) {				superMenu.add(m);			}		}		return (superMenu);	}	/**	 *  Creates a JMenu given by a String with all the MenuItems specified in the	 *  properties file.	 *	 * @param  key       The String used to identify the Menu	 * @param  jcpPanel  Description of the Parameter	 * @return           The created JMenu	 */	protected JMenu createMenu(JChemPaintPanel jcpPanel, String key) {		logger.debug("Creating menu: ", key);		String[] itemKeys = StringHelper.tokenize(getMenuResourceString(key));		JMenu menu = new JMenu(JCPLocalizationHandler.getInstance().getString(key));		for (int i = 0; i < itemKeys.length; i++) {			if (itemKeys[i].equals("-")) {				menu.addSeparator();			}			else if (itemKeys[i].startsWith("@")) {				JMenu me = createMenu(jcpPanel, itemKeys[i].substring(1));				menu.add(me);			}			else if (itemKeys[i].endsWith("+")) {				JMenuItem mi = createMenuItem(jcpPanel,						itemKeys[i].substring(0, itemKeys[i].length() - 1),						true, false						);				if(itemKeys[i].substring(0, itemKeys[i].length() - 1).equals("addImplHydrogen"))					((JCheckBoxMenuItem)mi).setSelected(true);				if(itemKeys[i].substring(0, itemKeys[i].length() - 1).equals("insertstructure") && !jcpPanel.guiString.equals("applet"))					((JCheckBoxMenuItem)mi).setSelected(true);				// default off, because we cannot turn it on anywhere (yet)				menu.add(mi);			}			else {				JMenuItem mi = createMenuItem(jcpPanel, itemKeys[i], false, false);				menu.add(mi);			}		}		return menu;	}	/**	 *  Gets the menuResourceString attribute of the JChemPaint object	 *	 * @param  key  Description of the Parameter	 * @return      The menuResourceString value	 */	public String getMenuResourceString(String key) {		String str;		try {			str = JCPPropertyHandler.getInstance().getGUIDefinition(this.guiString).getString(key);		} catch (MissingResourceException mre) {			str = null;		}		return str;	}	/**	 *  Adds ShortCuts to the JChemPaintMenuBar object	 *	 * @param  cmd  String The Strin to identify the MenuItem	 * @param  mi   the regarding MenuItem	 * @param  jcp  The feature to be added to the ShortCuts attribute	 */	private void addShortCuts(String cmd, JMenuItem mi, JChemPaintPanel jcp) {		Properties shortCutProps = JCPPropertyHandler.getInstance().getJCPShort_Cuts();		String shortCuts = shortCutProps.getProperty(cmd);		String charString = null;		if (shortCuts != null) {			try {				String[] scStrings = shortCuts.trim().split(",");				if (scStrings.length > 1) {					charString = scStrings[1];					String altKey = scStrings[0] + "_MASK";					Field field = Class.forName("java.awt.event.InputEvent").getField(altKey);					int i = field.getInt(Class.forName("java.awt.event.InputEvent"));					mi.setAccelerator(KeyStroke.getKeyStroke(charString.charAt(0), i));					jcp.registerKeyboardAction(mi.getActionListeners()[0], charString, KeyStroke.getKeyStroke(charString.charAt(0), i), JComponent.WHEN_IN_FOCUSED_WINDOW);				}				else {					charString = "VK_" + scStrings[0];					Field field = Class.forName("java.awt.event.KeyEvent").getField(charString);					int i = field.getInt(Class.forName("java.awt.event.KeyEvent"));					mi.setAccelerator(KeyStroke.getKeyStroke(i, 0));					jcp.registerKeyboardAction(mi.getActionListeners()[0], charString, KeyStroke.getKeyStroke(i, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);				}			} catch (ClassNotFoundException cnfe) {				cnfe.printStackTrace();			} catch (NoSuchFieldException nsfe) {				nsfe.printStackTrace();			} catch (IllegalAccessException iae) {				iae.printStackTrace();			}		}	}	/**	 *  Craetes a JMenuItem given by a String and adds the right ActionListener to	 *  it.	 *	 * @param  cmd         String The Strin to identify the MenuItem	 * @param  jcpPanel    Description of the Parameter	 * @param  isCheckBox  Description of the Parameter	 * @param  isChecked   Description of the Parameter	 * @return             JMenuItem The created JMenuItem	 */	protected JMenuItem createMenuItem(JChemPaintPanel jcpPanel, String cmd, boolean isCheckBox, boolean isChecked) {		logger.debug("Creating menu item: ", cmd);		String translation = "***" + cmd + "***";		try {			translation = JCPLocalizationHandler.getInstance().getString(cmd);			logger.debug("Found translation: ", translation);		} catch (MissingResourceException mre) {			logger.error("Could not find translation for: " + cmd);		}		JMenuItem mi = null;		if (isCheckBox) {			mi = new JCheckBoxMenuItem(translation);			mi.setSelected(isChecked);		}		else {			mi = new JMenuItem(translation);		}		logger.debug("Created new menu item...");		String astr = JCPPropertyHandler.getInstance().getResourceString(cmd + JCPAction.actionSuffix);        if (astr == null) {			astr = cmd;		}		mi.setActionCommand(astr);		JCPAction action = jcpPanel.getJCPAction().getAction(jcpPanel, astr);		if (action != null) {			// sync some action properties with menu			mi.setEnabled(action.isEnabled());			mi.addActionListener(action);			logger.debug("Coupled action to new menu item...");		}		else {			logger.error("Could not find JCPAction class for:" + astr);			mi.setEnabled(false);		}		addShortCuts(cmd, mi, jcpPanel);		return mi;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -