From: Bruno Sinou Date: Tue, 6 Sep 2011 10:07:05 +0000 (+0000) Subject: Add a wrapper to simplify programmatic call on commands X-Git-Tag: argeo-commons-2.1.30~1173 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=f8b2f056bcddf6c27679c78fcfa436e799dc8a6c;p=lgpl%2Fargeo-commons.git Add a wrapper to simplify programmatic call on commands git-svn-id: https://svn.argeo.org/commons/trunk@4719 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/utils/CommandUtils.java b/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/utils/CommandUtils.java new file mode 100644 index 000000000..df519e01d --- /dev/null +++ b/eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/utils/CommandUtils.java @@ -0,0 +1,63 @@ +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); + } + } +}