/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev 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 05.05.2004 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package freemind.modes.mindmapmode.actions; import java.awt.event.ActionEvent; import java.util.ListIterator; import java.util.logging.Logger; import javax.swing.Action; import javax.swing.ImageIcon; import freemind.controller.actions.generated.instance.CompoundAction; import freemind.controller.actions.generated.instance.XmlAction; import freemind.main.Tools; import freemind.modes.MindMapNode; import freemind.modes.NodeAdapter; import freemind.modes.mindmapmode.MindMapController; import freemind.modes.mindmapmode.MindMapMapModel; import freemind.modes.mindmapmode.MindMapNodeModel; import freemind.modes.mindmapmode.actions.xml.AbstractXmlAction; import freemind.modes.mindmapmode.actions.xml.ActionPair; public class NodeGeneralAction extends AbstractXmlAction { protected final MindMapController modeController; private freemind.modes.mindmapmode.actions.NodeActorXml actor; SingleNodeOperation singleNodeOperation; protected static Logger logger; /** * null if you cannot provide a title that is present in the resources. Use * the setName method to set your not translateble title after that. give a * resource name for the icon. */ protected NodeGeneralAction(MindMapController modeController, final String textID, String iconPath) { super(null, iconPath != null ? new ImageIcon( modeController.getResource(iconPath)) : null, modeController); this.modeController = modeController; if (textID != null) { setName(modeController.getText(textID)); } this.singleNodeOperation = null; this.actor = null; if (logger == null) { logger = modeController.getFrame().getLogger( this.getClass().getName()); } } protected void setName(String name) { if (name != null) { putValue(Action.NAME, name); putValue(Action.SHORT_DESCRIPTION, Tools.removeMnemonic(name)); } } public NodeGeneralAction(MindMapController modeController, String textID, String iconPath, SingleNodeOperation singleNodeOperation) { this(modeController, textID, iconPath); this.singleNodeOperation = singleNodeOperation; } public NodeGeneralAction(MindMapController modeController, String textID, String iconPath, freemind.modes.mindmapmode.actions.NodeActorXml actor) { this(modeController, textID, iconPath); addActor(actor); } public void addActor(NodeActorXml actor) { this.actor = actor; if (actor != null) { super.addActor(actor); } } /** * The singleNodeOperation to set. */ public void setSingleNodeOperation(SingleNodeOperation singleNodeOperation) { this.singleNodeOperation = singleNodeOperation; } public void xmlActionPerformed(ActionEvent e) { if (singleNodeOperation != null) { for (ListIterator it = modeController.getSelecteds().listIterator(); it .hasNext();) { MindMapNodeModel selected = (MindMapNodeModel) it.next(); singleNodeOperation.apply( (MindMapMapModel) this.modeController.getMap(), selected); } } else { // xml action: // Do-action CompoundAction doAction = new CompoundAction(); // Undo-action CompoundAction undo = new CompoundAction(); // sort selectedNodes list by depth, in order to guarantee that // sons are deleted first: for (ListIterator it = modeController.getSelecteds().listIterator(); it .hasNext();) { MindMapNodeModel selected = (MindMapNodeModel) it.next(); ActionPair pair = actor.apply(this.modeController.getMap(), selected); if (pair != null) { doAction.addChoice(pair.getDoAction()); undo.addAtChoice(0, pair.getUndoAction()); } } if (doAction.sizeChoiceList() == 0) return; modeController.doTransaction((String) getValue(NAME), new ActionPair(doAction, undo)); } } protected void execute(ActionPair pair) { modeController.doTransaction(getShortDescription(), pair); } /* * (non-Javadoc) * * @see * freemind.controller.actions.FreeMindAction#act(freemind.controller.actions * .generated.instance.XmlAction) */ public void act(XmlAction action) { } /** */ protected NodeAdapter getNodeFromID(String string) { return modeController.getNodeFromID(string); } /** */ protected String getNodeID(MindMapNode selected) { // TODO Auto-generated method stub return modeController.getNodeID(selected); } }