2016-05-30 8 views
1

私は個人用のEclipseプラグインを作成しようとしています。ドロップダウンリストは、トグルボタンである3つの項目(item1、item2、item3)でツールバーに配置する必要があります。これらのボタンのそれぞれをトグルするとき、環境変数またはビルド変数は対応する値をとる必要があります。eclipseプラグイン・ハンドラーが呼び出されないのはなぜですか?

私の問題は、トグルボタンのハンドラが呼び出されないことです。

は、これを達成するために、私は今まで、次のことを書いた:

plugin.xmlの

<extension point="org.eclipse.ui.commands"> 
     <category 
      name="Sample Category" 
      id="example.commands.category"> 
     </category> 
     <command 
      name="Sample Command" 
      categoryId="example.commands.category" 
      id="example.commands.sampleCommand"> 
     </command> 
     <command 
      name="Dropdown Command" 
      categoryId="example.commands.category" 
      id="example.commands.dropdownCommand"> 
     </command> 
    </extension> 

    <extension point="org.eclipse.ui.handlers"> 
     <handler 
      commandId="example.commands.sampleCommand" 
      class="example.handlers.SampleHandler"> 
     </handler> 
     <handler 
      commandId="example.commands.dropdownCommand" 
      class="example.handlers.DropdownHandler"> 
     </handler> 
    </extension> 

    <extension point="org.eclipse.ui.menus"> 
     <menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions"> 
     <toolbar 
       id="example.toolbars.sampleToolbar" 
       label="Sample Menu"> 
      <command 
        commandId="example.commands.sampleCommand" 
        tooltip="Say hello world" 
        id="example.toolbars.sampleCommand" 
        style="pulldown"> 
      </command> 
     </toolbar> 
     </menuContribution> 
     <menuContribution locationURI="menu:example.toolbars.sampleCommand"> 
     <command commandId="example.commands.dropdownCommand" label="Processor1" style="toggle"> 
      <parameter name="example.toolbars.msg1" value="Processor1"></parameter> 
     </command> 

     <separator name="separator1" visible="true"/> 

     <command commandId="example.commands.dropdownCommand" label="Processor2" style="toggle"> 
      <parameter name="example.toolbars.msg2" value="Processor2"></parameter> 
     </command> 

     <separator name="separator2" visible="true"/> 

     <command commandId="example.commands.dropdownCommand" label="Processor3" style="toggle"> 
      <parameter name="example.toolbars.msg3" value="Processor3"></parameter> 
     </command> 
     </menuContribution> 
    </extension> 

</plugin> 

DropdownHandler.java

public class DropdownHandler extends AbstractHandler { 
    /** 
    * The constructor. 
    */ 
    public DropdownHandler() { 
    } 

    /** 
    * 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(), 
       "GreeHills Project", 
       "Hello, Eclipse World"); 
     return null; 
    } 
} 

SampleHandler.java

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(), 
       "GreeHills Project", 
       "Please pick a processor from the dropdown list!"); 
     return null; 
    } 
} 

UIがうまくいき、すべてがその場所にあります。 enter image description here

サンプルコマンドをクリックすると、適切なハンドラが呼び出され、対応するメッセージが表示されたポップアップウィンドウが表示されます。 プロセッサ1、プロセッサ2またはプロセッサ3をクリックしても、何も起こらず、メッセージも表示されません。

私はこのグーグルを見つけました:https://wiki.eclipse.org/Menu_Contributions/Dropdown_Command (MessageDialogを表示するためにハンドラ内のSysOutPrintlnを変更しました)同じ結果が得られました。メッセージは表示されません。

最終的に私のプラグインの仕事をする方法についてのアイデアは高く評価されています!

答えて

1

問題は「プロセッサ2」ボタンを押すと何も起こりません。

プロセッサ2ボタンではパラメータを設定していますが、コマンドセクションではパラメータを受け付けていません。

あなたは試してみて、編集するには、このしてくださいすることができ:

<command 
    name="Dropdown Command" 
    categoryId="example.commands.category" 
    id="example.commands.dropdownCommand"> 
</command> 

をそしてこの

<command name="Dropdown Command" categoryId="example.commands.category" id="example.commands.dropdownCommand"> 
     <commandParameter id="example.toolbars.msg2" name="DropOpts" optional="true"></commandParameter> 
</command> 

ようにそれを作るコマンドパラメータのために、私は「example.toolbars.msg2」を設定していると、これがなければならないことに注意してくださいプロセス2ボタンを押したときのみ動作します

関連する問題