/******************************************************************************* * Copyright (c) 2008, 2016 Ketan Padegaonkar and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Ketan Padegaonkar - initial API and implementation * Patrick Tasse - SWTBotView does not support dynamic view menus (Bug 489325) *******************************************************************************/ package org.eclipse.swtbot.eclipse.finder.finders; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.core.commands.Command; import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotCommand; import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView; import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable; import org.eclipse.swtbot.swt.finder.results.ListResult; import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu; import org.eclipse.swtbot.swt.finder.widgets.SWTBotRootMenu; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.commands.ICommandService; import org.hamcrest.Matcher; /** * Finds all the contribution items within the application. * * @author @author Stephen Paulin <paulin [at] spextreme [dot] com> * @version $Id$ * @since 1.2 * @deprecated Use {@link SWTBotView#viewMenu()} and * {@link SWTBotRootMenu#menu(String...)} to get a * {@link SWTBotMenu} instead. */ @Deprecated public class CommandFinder { /** * The logging instance for this class. */ private static final Logger log = Logger.getLogger(CommandFinder.class); /** * Creates a CommandFinder. */ public CommandFinder() { // Do nothing. } /** * Finds a command matching the given item. * * @param matcher the matcher that can match commands. * @return all command that match the matcher. */ public List<SWTBotCommand> findCommand(Matcher<?> matcher) { return findCommand(getCommandService(), matcher); } /** * Gets a list of all command matching the matcher. * * @param service the {@link ICommandService} instance to use. * @param matcher the matcher that can match the command item. * @return The list of {@link Command}s that match the matcher. */ public List<SWTBotCommand> findCommand(final ICommandService service, final Matcher<?> matcher) { return UIThreadRunnable.syncExec(new ListResult<SWTBotCommand>() { public List<SWTBotCommand> run() { List<SWTBotCommand> l = new ArrayList<SWTBotCommand>(); Command[] commands = service.getDefinedCommands(); for (int i = 0; i < commands.length; i++) try { String name = commands[i].getName(); if (matcher.matches(name)) l.add(new SWTBotCommand(commands[i])); } catch (Exception e) { log.error("Failed with an exception on the command: " + commands[i].toString(), e); //$NON-NLS-1$ } return l; } }); } /** * Gets the command service. * * @return The {@link ICommandService}. */ protected ICommandService getCommandService() { return (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class); } }