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

📄 popupcontroller2d.java

📁 化学图形处理软件
💻 JAVA
字号:
/* *  $RCSfile$ *  $Author: egonw $ *  $Date: 2007-04-16 10:40:19 +0200 (Mon, 16 Apr 2007) $ *  $Revision: 8201 $ * *  Copyright (C) 1997-2007  The Chemistry Development Kit (CDK) project * *  Contact: cdk-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 I ask is that proper credit is given for my 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.controller;import java.awt.event.MouseEvent;import java.util.HashMap;import java.util.Hashtable;import java.util.Vector;import javax.swing.JButton;import org.openscience.cdk.interfaces.IChemModel;import org.openscience.cdk.interfaces.IChemObject;import org.openscience.cdk.renderer.Renderer2DModel;import org.openscience.cdk.tools.LoggingTool;/** * Class that acts on MouseEvents and KeyEvents. * * @author         egonw * @cdk.created    2004-03-26 * @cdk.keyword    mouse events * @cdk.keyword    popup menus * @cdk.module     control * @cdk.require    swing */public class PopupController2D extends Controller2D {	private LoggingTool logger;	private static Hashtable popupMenus = null;	public PopupController2D(IChemModel chemModel, Renderer2DModel r2dm, Controller2DModel c2dm, Vector lastAction, JButton moveButton, HashMap funcgroups) {		this(chemModel,r2dm,c2dm);		this.lastAction=lastAction;		this.moveButton=moveButton;		this.setFuncgroupsmap(funcgroups);	}		public PopupController2D(IChemModel chemModel, Renderer2DModel r2dm, Controller2DModel c2dm) {        super(chemModel, r2dm, c2dm);		logger = new LoggingTool(this);		if (PopupController2D.popupMenus == null) {			PopupController2D.popupMenus = new Hashtable();		}	}	public PopupController2D(IChemModel chemModel, Renderer2DModel r2dm) {		super(chemModel, r2dm);	}	/**	 *  manages all actions that will be invoked when a mouse button is pressed	 *	 *@param  event  MouseEvent object	 */	public void mousePressed(MouseEvent event)	{    isUndoableChange = false;		int[] screenCoords = {event.getX(), event.getY()};		int[] mouseCoords = getWorldCoordinates(screenCoords);		int mouseX = mouseCoords[0];		int mouseY = mouseCoords[1];		logger.debug("MousePressed Event Props: mode=", c2dm.getDrawModeString());        if (logger.isDebugEnabled()) {            logger.debug("   trigger=" + event.isPopupTrigger() +				/* ", Button number: " + event.getButton() + */				", Click count: " + event.getClickCount());        }		if (event.isPopupTrigger() ||             (event.getModifiers() & MouseEvent.BUTTON3_MASK) != 0)		{			logger.info("Popup menu triggered...");			popupMenuForNearestChemObject(mouseX, mouseY, event);		} else {            super.mousePressed(event);		}	}	/**	 *  Sets the popupMenu attribute of the Controller2D object	 *	 *@param  someClass  The new popupMenu value	 *@param  menu        The new popupMenu value	 */	public void setPopupMenu(Class someClass, CDKPopupMenu menu) {		PopupController2D.popupMenus.put(someClass.getName(), menu);	}	/**	 *  Returns the popup menu for this IChemObject if it is set, and null	 *  otherwise.	 *	 *@param  someClass  Description of the Parameter	 *@return             The popupMenu value	 */	public CDKPopupMenu getPopupMenu(Class classSearched) {        logger.debug("Searching popup for: ", classSearched.getName());        while (classSearched.getName().startsWith("org.openscience.cdk")) {            logger.debug("Searching popup for: ", classSearched.getName());            if (PopupController2D.popupMenus.containsKey(classSearched.getName())) {                return (CDKPopupMenu) PopupController2D.popupMenus.get(classSearched.getName());            } else {                logger.debug("  recursing into super class");                classSearched = classSearched.getSuperclass();            }		}        return null;	}	private void popupMenuForNearestChemObject(int mouseX, int mouseY, MouseEvent event)	{		IChemObject objectInRange = getChemObjectInRange(mouseX, mouseY);		CDKPopupMenu popupMenu = getPopupMenu(objectInRange.getClass());    if (popupMenu != null)		{			popupMenu.setSource(objectInRange);			logger.debug("Set popup menu source to: ", objectInRange);			popupMenu.show(event.getComponent(), event.getX(), event.getY());		} else		{			logger.warn("Popup menu is null! Could not set source!");		}	}}

⌨️ 快捷键说明

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