关闭

rcp(插件开发)Command 传值的问题

1600人阅读 评论(0) 收藏 举报
分类:

有这样一个需求:如果想在command执行的时候携带一些信息,然后还想获取这些信息 这个如何实现呢?

 

一 传值部分(传递的是ExecutionEvent,通过ExecutionEvent携带的ApplicationContext传递对象,还可以传递别的类型如MAP)

//获取ICommandService

ICommandService commandService = (ICommandService) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart().getSite().getService(ICommandService.class);

//调用Command并传递对象

commandService.getCommand("CommandId").executeWithChecks(new ExecutionEvent(null, Collections.EMPTY_MAP, null, sendObject));

 

二 取值部分 这个是在command相关联的handler里取到这个ExecutionEvent,ExecutionEvent里携带相关传入的信息。

package command_test.handlers;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.jface.dialogs.MessageDialog;

/**
 * Our sample handler extends AbstractHandler, an IHandler base class.
 * @see org.eclipse.core.commands.IHandler
 * @see org.eclipse.core.commands.AbstractHandler
 */
public class SampleHandler extends AbstractHandler {
 /**
  * The constructor.
  */
 public SampleHandler() {
 }

 /**
  * the command has been executed, so extract extract the needed information
  * from the application context.
  */
 public Object execute(ExecutionEvent event) throws ExecutionException {
  IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
  MessageDialog.openInformation(
    window.getShell(),
    "Command_Test",
    "Hello, Eclipse world");
  return null;
 }
}

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:682329次
    • 积分:7998
    • 等级:
    • 排名:第2539名
    • 原创:170篇
    • 转载:112篇
    • 译文:1篇
    • 评论:93条
    文章分类
    最新评论