/* * Copyright (C) 2007-2012 Mathieu Baudier * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.argeo.eclipse.ui.utils; import java.util.ArrayList; import org.argeo.ArgeoException; import org.argeo.eclipse.ui.ArgeoUiPlugin; import org.eclipse.core.commands.Command; import org.eclipse.core.commands.IParameter; import org.eclipse.core.commands.Parameterization; import org.eclipse.core.commands.ParameterizedCommand; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.commands.ICommandService; import org.eclipse.ui.handlers.IHandlerService; /** * Centralizes useful and generic methods concerning eclipse commands. * */ public class CommandUtils { /** * Factorizes command call that is quite verbose and always the same * * NOTE that none of the parameter can be null */ public static void CallCommandWithOneParameter(String commandId, String paramId, String paramValue) { try { IWorkbench iw = ArgeoUiPlugin.getDefault().getWorkbench(); IHandlerService handlerService = (IHandlerService) iw .getService(IHandlerService.class); // get the command from plugin.xml IWorkbenchWindow window = iw.getActiveWorkbenchWindow(); ICommandService cmdService = (ICommandService) window .getService(ICommandService.class); Command cmd = cmdService.getCommand(commandId); ArrayList parameters = new ArrayList(); // get the parameter IParameter iparam = cmd.getParameter(paramId); Parameterization params = new Parameterization(iparam, paramValue); parameters.add(params); // build the parameterized command ParameterizedCommand pc = new ParameterizedCommand(cmd, parameters.toArray(new Parameterization[parameters.size()])); // execute the command handlerService = (IHandlerService) window .getService(IHandlerService.class); handlerService.executeCommand(pc, null); } catch (Exception e) { throw new ArgeoException("Error while calling command of id :" + commandId, e); } } }