/*FreeMind - A Program for creating and viewing Mindmaps *Copyright (C) 2000-2011 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. */ package plugins.map; import java.text.MessageFormat; import java.util.Iterator; import java.util.List; import javax.swing.JOptionPane; import freemind.common.OptionalDontShowMeAgainDialog; import freemind.common.TextTranslator; import freemind.main.FreeMind; import freemind.main.HtmlTools; import freemind.modes.MindMapNode; import freemind.modes.mindmapmode.hooks.MindMapNodeHookAdapter; /** * @author foltin * @date 1.4.2012 */ public class SearchInMapForNodeTextAction extends MindMapNodeHookAdapter { /** * */ private static final String REALLY_SEARCH_FOR_NODE_TEXT_IN_WEB = "really_search_for_node_text_in_web"; static final String NODE_CONTEXT_PLUGIN_NAME = "plugins/map/MapDialog_SearchInMapForNodeTextAction.properties"; /* * (non-Javadoc) * * @see * freemind.extensions.NodeHookAdapter#invoke(freemind.modes.MindMapNode) */ public void invoke(MindMapNode pNode) { // generate string to search for StringBuffer sb = new StringBuffer(); List selecteds = getMindMapController().getSelecteds(); for (Iterator it = selecteds.iterator(); it.hasNext();) { MindMapNode node = (MindMapNode) it.next(); // Convert to plain text final String plainText = HtmlTools.htmlToPlain(node.getText()); if(sb.length()!=0) { sb.append(" "); } sb.append(plainText); } final String searchText = sb.toString(); // First of all: ask user: int showResult = new OptionalDontShowMeAgainDialog( getMindMapController().getFrame().getJFrame(), getMindMapController().getSelectedView(), REALLY_SEARCH_FOR_NODE_TEXT_IN_WEB, "confirmation", new TextTranslator() { public String getText(String pKey) { String text = getMindMapController() .getText(pKey); if (pKey.equals(REALLY_SEARCH_FOR_NODE_TEXT_IN_WEB)) { Object[] messageArguments = { searchText }; MessageFormat formatter = new MessageFormat(text); text = formatter.format(messageArguments); } return text; } }, new OptionalDontShowMeAgainDialog.StandardPropertyHandler( getMindMapController().getController(), FreeMind.RESOURCES_SEARCH_FOR_NODE_TEXT_WITHOUT_QUESTION), OptionalDontShowMeAgainDialog.ONLY_OK_SELECTION_IS_STORED) .show().getResult(); if (showResult != JOptionPane.OK_OPTION) { return; } // is the map open? Ask base class. Registration registration = getRegistration(); if (registration != null) { // is the map open? MapDialog mapDialog = registration.getMapDialog(); if (mapDialog == null) { // if not, open it! getMindMapController().createModeControllerHook( MapDialog.MAP_HOOK_NAME); } mapDialog = registration.getMapDialog(); if (mapDialog != null) { mapDialog.setSingleSearch(); mapDialog.search(sb.toString(), true); } else { logger.warning("Can't find dialog to connect to!"); } } else { logger.warning("Can't find registration base class!"); } } public Registration getRegistration() { return (Registration) getPluginBaseClass(); } }