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

📄 actionfactory.java

📁 思维导图(Mind Mapping)以放射性思考(Radiant Thinking)为基础的收放自如方式
💻 JAVA
字号:
/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2004  Joerg Mueller, Daniel Polansky, Christian Foltin and others. * *See COPYING for Details * *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 (at your option) 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. * * Created on 24.04.2004 *//*$Id: ActionFactory.java,v 1.1.4.4 2005/01/09 00:05:05 christianfoltin Exp $*/package freemind.controller.actions;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.Set;import java.util.Vector;import freemind.controller.Controller;import freemind.controller.actions.generated.instance.XmlAction;/** * @author foltin * */public class ActionFactory {	private Controller controller;	/** This Vector denotes all handler of the action to be called for each action. */	private Vector registeredHandler;	/** This set denotes all filters for XmlActions.*/	private Set registeredFilters;	/** HashMap of Action class -> actor instance. */	private HashMap registeredActors;	/**	 * 	 */	public ActionFactory(Controller c) {		super();		this.controller = c;		registeredHandler = new Vector();		registeredFilters = new HashSet();		registeredActors = new HashMap();	}	/** The handler is put in front. Thus it is called before others are called.	 * @param newHandler	 */	public void registerHandler(ActionHandler newHandler) {	    // if it is present, put it in front:		if (!registeredHandler.contains(newHandler)) {		    registeredHandler.remove(newHandler);        }        registeredHandler.add(0, newHandler);	}	public void deregisterHandler(ActionHandler newHandler) {		registeredHandler.remove(newHandler);	}	public void registerFilter(ActionFilter newFilter) {		registeredFilters.add(newFilter);	}	public void deregisterFilter(ActionFilter newFilter) {		registeredFilters.remove(newFilter);	}	public void startTransaction(String name) {		for (Iterator i = registeredHandler.iterator(); i.hasNext();) {			ActionHandler handler = (ActionHandler) i.next();			handler.startTransaction(name);		}	}	public void endTransaction(String name) {		for (Iterator i = registeredHandler.iterator(); i.hasNext();) {			ActionHandler handler = (ActionHandler) i.next();			handler.endTransaction(name);		}	}	/**	 * @param doAction	 * @param undoAction	 */	public void executeAction(ActionPair pair) {	    if(pair == null)	        return;		ActionPair filteredPair = pair;		// first filter:		for (Iterator i = registeredFilters.iterator(); i.hasNext();) {			ActionFilter filter = (ActionFilter) i.next();			filteredPair = filter.filterAction(filteredPair);		}		Object[] aArray = registeredHandler.toArray();		for (int i = 0; i < aArray.length; i++) {            ActionHandler handler = (ActionHandler) aArray[i];			try {                handler.executeAction(filteredPair);            } catch (Exception e) {                e.printStackTrace();            }        }//		for (Iterator i = registeredHandler.iterator(); i.hasNext();) {//			ActionHandler handler = (ActionHandler) i.next();			// the executer must not disturb the whole picture if they throw something://		}	}	/**	 * @return	 */	public Controller getController() {		return controller;	}	/**	 * @param actor	 * @param action	 */	public void registerActor(ActorXml actor, Class action) {		registeredActors.put(action, actor);			}	public ActorXml getActor(XmlAction action) {		for (Iterator i = registeredActors.keySet().iterator(); i.hasNext();) {			Class actorClass = (Class) i.next();			if(actorClass.isInstance(action)) {				return (ActorXml) registeredActors.get(actorClass);			}		}//		Class actionClass = action.getClass();//		if(registeredActors.containsKey(actionClass)) {//			return (ActorXml) registeredActors.get(actionClass);//		}		throw new IllegalArgumentException("No actor present for xmlaction" + action.getClass());	}}

⌨️ 快捷键说明

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