【问题标题】:How to access the map returned by IParameterValues::getParameterValues()?如何访问 IParameterValues::getParameterValues() 返回的映射?
【发布时间】:2012-10-01 23:02:04
【问题描述】:

我为这个命令声明了一个命令和一个命令参数。我将此 commandParameter 的“值”指定为我自己实现的类。该类的实现如下,

public class ParameterValues implements IParameterValues {

    @Override
    public Map<String, Double> getParameterValues() {
        // TODO Auto-generated method stub
        Map<String, Double> values = new HashMap<String, Double>(2);
        values.put("testParam", 1.1239);
        values.put("AnotherTest", 4.1239);
        return values;      
    }

}

这个命令的handler的实现是吹的,

public class testHandler extends AbstractHandler implements IHandler {
    private static String PARAMETER_ID = "my.parameter1";

    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {

        String value = event.getParameter(PARAMETER_ID);    
        MessageDialog.openInformation(HandlerUtil.getActiveShell(event),
                "Test", "Parameter ID: " + PARAMETER_ID + "\nValue: " + value);

        return null;
    }

}

现在,我将命令贡献给菜单,

 <menuContribution
            locationURI="menu:org.eclipse.ui.main.menu">
         <menu
               id="my.edit"
               label="Edit">
            <command
                  commandId="myCommand.test"
                  label="Test1">
               <parameter
                     name="my.parameter1"
                     value="testParam">
               </parameter>
            </command>

由于我为 commandParater 指定了一个“值”类,我希望在单击菜单时,此代码行“String value = event.getParameter(PARAMETER_ID);”在处理程序类中返回 1.1239 而不是“testParam”。 但是,我仍然看到代码行返回“testParam”。

有什么问题?如何访问 getParameterValues() 返回的地图?

顺便说一句,即使我没有在地图中定义“ppp”,以下菜单声明仍然有效。

 <menuContribution
            locationURI="menu:org.eclipse.ui.main.menu">
         <menu
               id="my.edit"
               label="Edit">
            <command
                  commandId="myCommand.test"
                  label="Test1">
               <parameter
                     name="my.parameter1"
                     value="ppp">
               </parameter>
            </command>

谢谢!

【问题讨论】:

    标签: eclipse-plugin eclipse-rcp


    【解决方案1】:

    来自javadoc,org.eclipse.core.commands.IParameterValues.getParameterValues()“返回一个由参数值的外部化名称键控的映射。这些名称应该是人类可读的,并且通常用于在某种用户界面中向用户显示。值应该是命令处理程序将解释的实际值。”

    此接口用于为命令参数提供可翻译的名称。这样“显示视图(包资源管理器)”就可以显示在 Keys 首选项页面中,而不是“显示视图(org.eclipse.jdt.ui.PackageExplorer)”

    org.eclipse.ui.menus 定义必须包含参数值而不是可翻译的名称。

    如果你想将字符串参数处理成各种对象,可以在命令定义中定义参数类型和AbstractParameterValueConverter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 2021-11-17
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多