0

このコマンドのコマンドとcommandParameterを宣言しました。この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;      
    }

}

このコマンドのハンドラーの実装は打撃です、

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に「values」クラスを指定したので、メニューをクリックすると、このコード行「String value = event.getParameter(PARAMETER_ID);」が期待されます。ハンドラークラスでは、「testParam」の代わりに1.1239が返されます。しかし、コード行が「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>

ありがとう!

4

1 に答える 1

0

javadoc から、org.eclipse.core.commands.IParameterValues.getParameterValues()「パラメーター値の外部化された名前をキーとするマップを返します。これらの名前は、人間が判読できるものである必要があり、通常、何らかのユーザー インターフェイスでユーザーに表示するためのものです。値は、解釈される実際の値である必要があります。コマンドのハンドラーによって。」

このインターフェイスは、コマンド パラメーターの翻訳可能な名前を提供するために使用されます。「ビューの表示 (org.eclipse.jdt.ui.PackageExplorer)」の代わりに「ビューの表示 (パッケージ・エクスプローラー)」をキー設定ページに表示できるように

ただし、org.eclipse.ui.menus定義には、翻訳可能な名前ではなく、パラメーター値が含まれている必要があります。

AbstractParameterValueConverter文字列パラメータを処理してさまざまなオブジェクトに変換する場合は、コマンド定義でパラメータ タイプを定義できます。

于 2012-10-01T15:02:04.970 に答える