From f8b2f056bcddf6c27679c78fcfa436e799dc8a6c Mon Sep 17 00:00:00 2001 From: Bruno Sinou Date: Tue, 6 Sep 2011 10:07:05 +0000 Subject: [PATCH] Add a wrapper to simplify programmatic call on commands git-svn-id: https://svn.argeo.org/commons/trunk@4719 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../argeo/eclipse/ui/utils/CommandUtils.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 eclipse/runtime/org.argeo.eclipse.ui/src/main/java/org/argeo/eclipse/ui/utils/CommandUtils.java 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); + } + } +} -- 2.30.2